@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?
  • Вопрос задан
  • 293 просмотра
Решения вопроса 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"


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

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

Войти через центр авторизации
Похожие вопросы
10 мая 2024, в 18:22
8000 руб./за проект
10 мая 2024, в 18:16
30000 руб./за проект
10 мая 2024, в 18:07
20000 руб./за проект