ramzes, Ну не показал, не суть. Это всё детали. Суть в том, что за один запрос несколько шаблонов будет обработано. Хорошо, запилил я reset, дизайн всё равно ужасен.
чем ужасен?
что может быть ужаснее рендинга 2х шаблонов при выводе максимум одного?
ramzes, Тем, что данные сбрасываются неявно. Такой интерфейс лучше всего подходит для единичных экземпляров.
Сравни:
$t = new Template('/path/to/templates/dir/t1.tpl');
$t->key1 = 'val1';
echo $t->render();
// key1 больше не существует
$t->setPath('/path/to/templates/dir/t2.tpl')
$t->key2 = 'val2';
echo $t->render();
// key2 больше не существует
И:
$e = new Engine('/path/to/templates/dir');
echo $e->render('t1.tpl', ['key1' => 'val1']);
echo $e->render('t2.tpl', ['key2' => 'val1']);
Какой лучше читается и понимается без чтения документации?
reaper, вроде как решается добавлением одного метода
reaper, для меня одинаково) ты сейчас свой вкус возводишь в правило
ramzes, Ну вот у меня есть некоторый layout, что принимает данные, включая content, содержащий уже отрендеренный шаблон. И таких вот контентов может быть сколько угодно.
Иногда надо не только страничку отдать, а например E-Mail ещё отправить, отчёт какой-нибудь сгенерировать и т.д и т.п.
ramzes, По-моему это нифига не вкусовщина. Многие быдлокодеры ленивы и документацию читают только когда всё совсем плохо. В конце-концов лучшая документация -- это сам код. Из примера видно, что в первом случае, быдлокодер, нечитавший документацию, попытается обратиться к несуществующей переменной key1 во втором шаблоне. Это хорошо, если документация вообще есть, иначе придётся копать исходники и выяснять самому, что там не так, а это может занять много времени. Короче тут ещё можно долго переливать из пустого в порожнее, но факт остаётся фактом, интерфейс хуже не придумаешь, и руки надо оторвать тому, кто это додумался сделать.
# reaper (31.12.2015 / 03:35)
ramzes, По-моему это нифига не вкусовщина. Многие быдлокодеры ленивы и документацию читают только когда всё совсем плохо. В конце-концов лучшая документация -- это сам код. Из примера видно, что в пе
это не быдлокодер, а наркоман, раз уж он все еще пытается че то изобразить с 2мя шаблонами.
вся эта твоя проблема, надуманная
Менеджер модулей
Часто крупные приложения разделяются на модули, что позволяет повторно использовать части приложения в других проектах, а так же распространять их. Так, удобно для своего проекта установить систему управления пользователями (авторизация, бан, восстановление пароля), чем писать ее с нуля. Проект с таким решением должен иметь модульную архитектуру, каждый модуль которого можно представить в виде набора классов, содержащихся в одном каталоге. Часто модуль включает класс инициализации, который используется при старте приложения и отвечает за загрузку и подготовку модуля к использованию.
Пакет
ModuleManager реализует простой механизм загрузки и инициализации модулей приложения. Конструктор класса Manager этого пакета принимает адрес каталога, в котором будут содержаться модули, а так же массив имен загружаемых модулей. После инстанциации этого класса, необходимо вызвать метод init, передав ему имя вызываемого у модуля метода для инициализации и массив параметров:
use Bricks\ModuleManager\Manager;
$manager = new Manager('modules', ['App', 'Auth', 'Forum']);
$manager->init('run');
Пример позволяет инициализировать приложение вида:
modules/
App/Module.php
Auth/Module.php
Forum/Module.php
Каждый из перечисленных модулей должен включать класс Module, метод run которого будет вызван при инициализации.
Архив с примером