@Sandro_s

Как правильно указать директорию?

Вначале проект находился в этой дир: ''D:/sites/mysite.local/'

start.php
<?php

// описываем конст. и где подкл.файлы    set_include_path(get_include_path().PATH_SEPARATOR.'core'.PATH_SEPARATOR.'controllers'); // функция автозагр.классов
    // et_include_path() - прописан в php.ini далее ук.что ещё в папке core и controllers нужно поискать
    spl_autoload_extensions('_class.php'); // расширения классов кот.нужно искать
    spl_autoload_register();
    define('DIR_TMPL', 'D:/sites/mysite.local/tmpl/');
    define('MAIN_LAYOUT', 'main'); // общий вид страницы
?>


Файл view_class.php в папке 'core' (D:\sites\mysite.local\core\view_class.php)

<?php

class View {
    
    private $dir_tmpl; // сво-во ук.путь к дир.
    
    public function __construct($dir_tmpl) { // приним.путь к дир.
        $this->dir_tmpl = $dir_tmpl; // записыв. его в сво-во обьекта
    }
    // принимаем tmplфайл для вывода:
    public function render($file, $params, $return = false) {
        $template = $this->dir_tmpl.$file.'.tpl'; // получаем путь к файлу полный - дир. имя файла. .tpl- все файлы будут иметь такое расш.
        extract($params); // передаём все парам. функция позв. преобраз. массив из п.11 в перем. пример: а=7 b=9 перем-а, b / эл.с ключём title в  arr преобр.в перем. которая передаётся в main.tpl
        ob_start(); // запускаем входной поток (трубу)
        include($template); // подкл. получивш.файлик с конечной строкой в буфере
        // либо возвр.стр либо вывод в брауз.:
        if ($return) return ob_get_clean(); // если return мы берём строку из трубы буфера и заодно очищаем. т.е. возвр.сод.буфера
        echo ob_get_clean(); // если return не указ. то вывод стр. и очищ.буфера.
    }
    
}

?>


И если дир. сменилась 'D:\sites\mysite.local\mvc'
в start.php указываю: 'define('DIR_TMPL', 'D:/sites/mysite.local/mvc/tmpl/');'
как правильно подключить папку 'tmpl', что изменить во view_class.php?
  • Вопрос задан
  • 316 просмотров
Решения вопроса 1
zxscv
@zxscv
По идее ничего не надо менять. Если не работает ищи в коде new View (//тут указывается путь до шаблонов//) видимо там ошибка
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SerafimArts
@SerafimArts
Senior Notepad Reader
Вопроса нихрена не понял, но в коде есть ошибки, обуславливающиеся малым опытом:
1) По теме: "define('DIR_TMPL', __DIR__ . '/tmpl');" избавит от указаний полного пути.

Прочее:
2) Глобальные штуки - это всегда плохо. Константы достаточно заменить на файлы конфигураций, а ещё лучше класс, который умеет читать эти файлы:
<?php
// config/example.php
return [
    'templates' => __DIR__ . '/tmpl'
];

$config = new Config(__DIR__ . '/config');
$config->get('example.templates'); // ".../tmpl"


В дальнейшем это позволит расширять и модифицировать конфиги за счёт переменных окружения, т.к. реальный способ чтения конфигов скрыт за соответствующим классом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы