MasterSID
Новичок
Шаблонизатор своими руками
Продолжая тему написания собственного шаблонизатора.
Еще более глубже изучив эту проблему, все больше задумываюсь над в проблемой выбора технологии реализации. Если попытаться классифицировать эту категорию скриптов, то можно выделить не менее двух типов шаблонизаторов:
Первые пишутся на основе классов и используют некий централизованный буфер для накопления всех данных, которые нужно подставить в шаблон, и по команде парсят их. Например:
$template->assignvar("VAR", "VALUE");
$template->display();
Вторые работают без парсера. Они собирают все данные в необходимые переменные, а в самом шаблоне используются непосредственные конструкции вывода содержимого этих переменных, типа <?=$var?>
Безспорно, что вторые будут работать гораздо быстрее первых, будут иметь возможность использовать тот же PHP. Возможно есть еще много плюсов, но все ли так хорошо, как кажется?
Хотелось бы услышать ваши аргументы в пользу каждого из этих способов. Кто как думает?
P.S. Кстати, есть еще один интересный тип, который является толи вариацией второго, толи чем-то отдельным - он использет в шаблоне функции, подставляющие в определенные места нужные значения. Вроде этого: <?=getContent()?> Мне кажется что такой подход не гибок и не удобен, т.к. иногда может потребоваться обработать такую ситуацию, когда этого контента нет и нужно заменить теги, окружаюжие данную конструкцию, а если возложить весь вывод этого блока на такую функцию, то можно растерять описание всего оформления.
Продолжая тему написания собственного шаблонизатора.
Еще более глубже изучив эту проблему, все больше задумываюсь над в проблемой выбора технологии реализации. Если попытаться классифицировать эту категорию скриптов, то можно выделить не менее двух типов шаблонизаторов:
Первые пишутся на основе классов и используют некий централизованный буфер для накопления всех данных, которые нужно подставить в шаблон, и по команде парсят их. Например:
$template->assignvar("VAR", "VALUE");
$template->display();
Вторые работают без парсера. Они собирают все данные в необходимые переменные, а в самом шаблоне используются непосредственные конструкции вывода содержимого этих переменных, типа <?=$var?>
Безспорно, что вторые будут работать гораздо быстрее первых, будут иметь возможность использовать тот же PHP. Возможно есть еще много плюсов, но все ли так хорошо, как кажется?
Хотелось бы услышать ваши аргументы в пользу каждого из этих способов. Кто как думает?
P.S. Кстати, есть еще один интересный тип, который является толи вариацией второго, толи чем-то отдельным - он использет в шаблоне функции, подставляющие в определенные места нужные значения. Вроде этого: <?=getContent()?> Мне кажется что такой подход не гибок и не удобен, т.к. иногда может потребоваться обработать такую ситуацию, когда этого контента нет и нужно заменить теги, окружаюжие данную конструкцию, а если возложить весь вывод этого блока на такую функцию, то можно растерять описание всего оформления.
