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

Absinthe

жожо
Подскажите сабж.
Поработал с качественным шаблонизатором - без этой штуки сложно обходиться.
А сегодня на хабре увидел обзор twig. Но хочется все же синтаксис PHP.
 

Absinthe

жожо
Духовность™ Я его в текущий момент и использую, но мне необходимо наследование шаблонов.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Я конечно может мало чего понимаю, но стандартный шаблонный движок - это один класс, плюс пара вызовов ob_ функций. Я не прав? Зачем городить огород с наследованием в шаблонах, я даже себе представить такое не могу.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
я спросил не про вечный вопрос зачем другие шаблонизаторы, они нужны, у нас верстальщик php знает плохо, а вот наследование туда зачем? Хотя...
 

Вурдалак

Продвинутый новичок
Можно выдрать из Symfony 2:
PHP:
<!-- src/Acme/HelloBundle/Resources/views/Hello/index.html.php -->
<?php $view->extend('AcmeHelloBundle::layout.html.php') ?>

Hello <?php echo $name ?>!
P.S. Кстати, это от автора того же twig.
P.P.S. c0dex, для тех же layout'ов.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Вурдалак
я не знаю что такое layout у вас, мне оно не нужен был ни в одном моем проекте
 

Krishna

Продался Java
расскажите нам.
В первую очередь "ненативные" шаблоны нужны для пассивных шаблонов, когда V вызывается из C, представлению не позволяется дёргать логику на своё усмотрение.
Данные, передаваемые при этом во view инкапуслируются в виде объекта, что в частности позволяет его подменять mock-ом для тестирования и полностью изолировать представление от модели.
Это несложно )
И ничего из этого не может гарантировать native php, без дополнительных танцев с бубном. А любые дополнительные танцы означают лишь велосипедный шаблонизатор, взамен качественного стороннего, вот и всё.
 

MiksIr

miksir@home:~$
Ну не совсем. Оборачивание нативного php в класс - это все же не шаблонизатор. А проблемы глобальной области видимости - это проблемы всего приложения, а не шаблона. Если все инжектируется - то и из шаблона уже сложно что-то такое дернуть, что составит проблему.
 

Absinthe

жожо
Да я тоже за PHP. Но неужели трудно понять, что я спросил?

Апологеты дури про "native PHP" вообще понимают зачем нужны шаблонизаторы?
Я не согласен с вами, как и большинство(но понимаю смысл ваших высказываний). Пожалуйста не пишите в этой теме до появления третьей страницы, иначе все уйдет в оффтопик(а на третьей полюбому уже ушло) :)

И ничего из этого не может гарантировать native php, без дополнительных танцев с бубном.
Я за дополнительные танцы, про них и спросил в своем первом посте.

Я лично предпочитаю на каждую отдельную логическую страницу свой шабон от <doctype> до </html>
Я против дублирования кода и замены логики тупым(или полутупым) копипастом.

Ну не совсем. Оборачивание нативного php в класс - это все же не шаблонизатор. А проблемы глобальной области видимости - это проблемы всего приложения, а не шаблона. Если все инжектируется - то и из шаблона уже сложно что-то такое дернуть, что составит проблему.
Ничего не понял, но у шаблонов обычно своя область видимости(то, что в него передают). Остальное не понятно.
 

AmdY

Пью пиво
Команда форума
футер-хеадер - это муть, проще двухшаговая шаблонизация. сразу обрабатывается основной модуль генерирующий контент, а затем делается вставка в мастер темплэйт
<html>
.....
<?=$this->getContent()?>
.....
</html>

у меня таким макаром и для json выдачи просто подменяется мастер темплэйт, содержащий 1-2 строчки
<?=json_encode($this->getVars())?>
 
Сверху