Задать вопрос

Шаблонизатор. Как лучше?

Не знаю даже, как правильно подвести, поэтому просто приведу пару примеров.
Первый вариант:
ob_start();
$items = $db.... // Просто пример
while($item = $items->fetch_assoc()) {
echo  $this->view->generate('catalog/company-item.html', $item);
}

$data = [
'companies' => ob_get_clean(),
'id' => $this->id
];

return $this->view->render('catalog/main.html', $data);

generate() - загружает в буфер файл шаблона, с добавленными данными ($data)
render() - тоже самое, но добавляет данные в базовый шаблон, который уже содержит меню/футер и тд.
И второй вариант, это получить просто список всех элементов в виде массива, а в шаблоне уже использовать цикл и вывести нужные данные.

Какие вижу плюсы и минусы:
1 вариант:
+ Не нужно бегать по файлам и менять какой-то класс у элемента (например) в каждом цикле, а просто поменять в одном файле
- Со временем появляется куча файлов для шаблона и можно запутаться (хотя, учитывая что для каждого "модуля" есть отдельная папка, файлов будет не так уж и много, чтобы в них запутаться)
2 вариант:
+ Меньше файлов
(Не уверен в правильности суждения) + Такой вариант быстрее
- Используются условия и циклы в файле шаблона (хочется максимально отделить логику от представления)

Хочу услышать Ваше мнение об обоих вариантах.
  • Вопрос задан
  • 445 просмотров
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
Immortal_pony
@Immortal_pony Куратор тега PHP
https://medium.com/@DonnaInsolita/the-evolution-of...
Первый вариант - шаг 1.
Второй вариант - ~шаг 4.

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

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

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