Шаблонизатор с синтаксисом PHP и наследованием.

Krishna

Продался Java
Я не согласен с вами, как и большинство
Как мне нравится, когда кто-то берётся утверждать за большинство! :)
Наверное пользователи всеразличных смарти и не подозревают, что они нубы, а гуру юзают только натив)
Странно только, кто же понаделал всех этих шаблонизаторов в глупости своей)

Пожалуйста не пишите в этой теме до появления третьей страницы, иначе все уйдет в оффтопик(а на третьей полюбому уже ушло) :)
Ухожу-ухожу! ) Я уже собственно всё сказал :)

Если все инжектируется - то и из шаблона уже сложно что-то такое дернуть, что составит проблему
Это как раз не "составит проблему", а строго проконтролирует пассивность шаблона и избавит код от неявных зависимостей.
Всё что надо - в шаблон передаётся переменными или массивами, а в шаблоне всё что должно быть - циклы по массивам, переменные и простейшие условные операторы по ним + метки областей включения других массивов (возможно, а возможно и нет).
Таким образом, мы в частности, получаем прекрасно покрываемый тестами код.

P.S. В моём понимании для шаблонизатора оптимален xml синтаксис - его удобно обрабатывать программно и на него можно настраивать редакторы.
Мне, по крайней мере оч понравился такой в cmf Xaraya в своё время.
 

MiksIr

miksir@home:~$
Это как раз не "составит проблему", а строго проконтролирует пассивность шаблона и избавит код от неявных зависимостей.
Всё что надо - в шаблон передаётся переменными или массивами, а в шаблоне всё что должно быть - циклы по массивам, переменные и простейшие условные операторы по ним + метки областей включения других массивов (возможно, а возможно и нет).
Таким образом, мы в частности, получаем прекрасно покрываемый тестами код.
Ну php код же не будете оборачивать в дополнительный синтаксис для того, что бы избавится от невидимых зависимостей. Почему же для шаблонов отдельный подход? Как я говорил, если в глобальной видимости ничего нет (условно, конечно, т.е. нету всяких реестров и сервис-локаторов живущих через синглтоны), то и не будт и неожиданных зависимостей. А что такое нативный php шаблон? По сути это extract+include внутри метода класса view. Т.е. и остается у нас в шбалоне только доступные данные + $this.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
c0dex, да, имеются в виду блоки.
У меня система построена образом таким, что есть общий шаблон, дальше уже на уровне контроллера определяется, для какой роли/юзера какой элемент показывать в том же хедере. Инклюдов почти нет
 

Absinthe

жожо
футер-хеадер - это муть, проще двухшаговая шаблонизация. сразу обрабатывается основной модуль генерирующий контент, а затем делается вставка в мастер темплэйт
Перестало хватать. Мастер темплейт уже не устраивает один и тот же, да и двухуровневости не хватает. А переносить эту логику во фронтконтроллер для меня попахивает.
Обычная же шаблонизация с блоками(ага, это наследование шаблонов, тут кто-то выше сомневался) в Django или ASP.NET таких проблем не имеет. В PHP есть Twig, но у него не PHP синтаксис.

Как мне нравится, когда кто-то берётся утверждать за большинство!
Большинство отписавшихся в этой теме.
 

fixxxer

К.О.
Партнер клуба
А чем твиг то не устраивает? Только тем, что там вместо сложного синтаксиса простой? ;)
 
  • Like
Реакции: atv

Absinthe

жожо
Твиг мне нравится всем кроме того, что он плохо копирует шаблоны django. Причем в местах расхождения twig кажется недоделанным.
Более того, это породит путаницу, что не очень то и приятно.

django:
Код:
{% cycle 'odd' 'even' %}

twig:
Код:
{{ cycle(['odd', 'even'], i) }}
 

fixxxer

К.О.
Партнер клуба
Ну если это единственная причина то она легко устранима пачкой своих TokenParser-ов. Они довольно несложно пишутся.
 

Absinthe

жожо
fixxxer нет, разница большая, писать долго. В любом случае не будет такого же поведения.
 

fixxxer

К.О.
Партнер клуба
Мне кстати твиговский вариант больше нравится - builtin функцию можно в куда большем числе контекстов использовать чем тэг
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
для питонщиков твиг, может, и кажется "не таким", а для тех, кто 5 лет назад юзал смарти - очень даже
 

Absinthe

жожо
grigori ну и я 5 лет назад юзал смарти. После чего "изобрел"(как мне казалось) PHP-шаблонизатор(ob_, extract...).
Впринципе сейчас мне нравится твиг, но лично у меня с ним могут быть проблемы, поэтому цель данной темы - найти шаблонизатор с блоками и PHP-синтаксисом.

Хотя написать его пара часов, наверное так и сделаю. В стиле ZF: <? $this->placeholder('foo')->captureStart(); ?> и т.д.
 

AmdY

Пью пиво
Команда форума
Absinthe
так смарти третий с php синтаксисом дружит вроде.
или сделай предпроцессор, как Irokez описывал в какой-то теме с год назад.
 

fixxxer

К.О.
Партнер клуба
Не-не, там же есть еще native-php вариант, дублирующий функционал Twig-а. Точно же.

http://symfony.com/doc/2.0/book/templating.html
PHP:
<?php $view->extend('::base.html.php') ?>

<?php $view['slots']->set('title', 'My cool blog posts') ?>

<?php $view['slots']->start('body') ?>
    <?php foreach ($blog_entries as $entry): ?>
        <h2><?php echo $entry->getTitle() ?></h2>
        <p><?php echo $entry->getBody() ?></p>
    <?php endforeach; ?>
<?php $view['slots']->stop() ?>
 

HraKK

Мудак
Команда форума
Юзайте активные шаблоны и будет вам счастье.
 
  • Like
Реакции: Rin

Absinthe

жожо
То, что вы говорите об этом противопоставлено тому, что я читал(а читал я такое: активные - с логикой отображения, пассивные - это говнокод, где логика отображения в контроллере из кусков по разным файлам все собирает).
И думал, что мои шаблоны вполне активные. Ссылку можно на материал?
 
Сверху