Как сделать шаблонизатор на php?
Придерживаюсь мнения что лучщий шаблонизатор для PHP это сайм PHP но есть вопрос: как его правильно реализовать.
Ну т.е. условно страница у нас отрабатывает и есть набор данных в аккаунте которые нужно показать пользователю:
title страницы, имя юзера, баланс, таблица с данными.
Вот где почитать как архитекрутно правильно это сделать?
Да понятно MVC, но. у меня нет контроллера. Запрос приходит на роутер, который определяет какой вызывать класс обработчик (это жирная модель по сути), класс всё готовит и должен выплюнуть результат в шаблон по идее. Передавать шаблонизатору он через массив вероятно всё будет, но как это лучше делать, как определить для этого набора данных можно использовать сущствующий шаблон или надо создавть новый? Как таблицы шаблонизаирова если в одной 3 столбца, в другой 5? Или 4 и 4, но у первой первый столбец должен быть 70% а у второй последний?
- Вопрос задан более трёх лет назад
- 3447 просмотров
Комментировать
Решения вопроса 2
Empower people to give
Сначала — зачем нужен шаблонизатор. Тут подмена понятий. Скорее вопрос такой: как отделить вывод от заголовков. Если не отделять, то может быть такая ошибка
Hello,
Проблема решается, если вывод HTML делать после вывода заголовков. Например, использовать буфер
Hello,
Однако так придётся писать в каждом месте, где формируется HTML. Можно ли сократить?
Простейшее представление через буфер
session_start(); if (empty($_SESSION['username'])) header('Location: /login.php'); $viewsPath = __DIR__.'/views/'; // где лежат представления render($viewsPath . 'page.php'); // нарисовать страницу HTML
Hello,
А дополнительно ещё решают проблему отделения логики от формирования интерфейса. Работа с внешними данными в одном месте, а отображение их — в другом. Для этого в представление передают всё, что нужно показать. И точка. Лишних данных там не надо. В некоторых фреймворках стоит Exception если представление начнёт работать с базой данных, читает данные из входного запроса или пытается отправить заголовки.
session_start(); if (empty($_SESSION['username'])) header('Location: /login.php'); $viewsPath = __DIR__.'/views/'; // где лежат представления render($viewsPath . 'page.php', array( // отображаемые данные передаются массивом 'username' => $_SESSION['username'], ));
# page.php Hello, 