Не знаю даже, как правильно подвести, поэтому просто приведу пару примеров.
Первый вариант: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 вариант:
+ Меньше файлов
(Не уверен в правильности суждения) + Такой вариант быстрее
- Используются условия и циклы в файле шаблона (хочется максимально отделить логику от представления)
Хочу услышать Ваше мнение об обоих вариантах.