Bricks: конструктор для новичков

1.08K
.
reaper
ramzes, Ну не показал, не суть. Это всё детали. Суть в том, что за один запрос несколько шаблонов будет обработано. Хорошо, запилил я reset, дизайн всё равно ужасен.
.
ramzes
чем ужасен?
что может быть ужаснее рендинга 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']);


Какой лучше читается и понимается без чтения документации?
.
(\/)____o_O____(\/)
reaper, вроде как решается добавлением одного метода
.
reaper, для меня одинаково) ты сейчас свой вкус возводишь в правило
.
reaper
ramzes, Ну вот у меня есть некоторый layout, что принимает данные, включая content, содержащий уже отрендеренный шаблон. И таких вот контентов может быть сколько угодно.
Иногда надо не только страничку отдать, а например E-Mail ещё отправить, отчёт какой-нибудь сгенерировать и т.д и т.п.
.
reaper
ramzes, По-моему это нифига не вкусовщина. Многие быдлокодеры ленивы и документацию читают только когда всё совсем плохо. В конце-концов лучшая документация -- это сам код. Из примера видно, что в первом случае, быдлокодер, нечитавший документацию, попытается обратиться к несуществующей переменной key1 во втором шаблоне. Это хорошо, если документация вообще есть, иначе придётся копать исходники и выяснять самому, что там не так, а это может занять много времени. Короче тут ещё можно долго переливать из пустого в порожнее, но факт остаётся фактом, интерфейс хуже не придумаешь, и руки надо оторвать тому, кто это додумался сделать.
.
# reaper (31.12.2015 / 03:35)
ramzes, По-моему это нифига не вкусовщина. Многие быдлокодеры ленивы и документацию читают только когда всё совсем плохо. В конце-концов лучшая документация -- это сам код. Из примера видно, что в пе
это не быдлокодер, а наркоман, раз уж он все еще пытается че то изобразить с 2мя шаблонами.
вся эта твоя проблема, надуманная
.
Delphinum
Менеджер модулей
Часто крупные приложения разделяются на модули, что позволяет повторно использовать части приложения в других проектах, а так же распространять их. Так, удобно для своего проекта установить систему управления пользователями (авторизация, бан, восстановление пароля), чем писать ее с нуля. Проект с таким решением должен иметь модульную архитектуру, каждый модуль которого можно представить в виде набора классов, содержащихся в одном каталоге. Часто модуль включает класс инициализации, который используется при старте приложения и отвечает за загрузку и подготовку модуля к использованию.

Пакет 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 которого будет вызван при инициализации.

Архив с примером
Всего: 49