Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
render()
, определяющий строчки типа echo "".$yourVar."";
внутри. В некоторых местах он даже быстрее привычной в остальных фреймворках ?php
шаблонизации, ибо не использует подавление вывода.echo "".$yourVar."";
echo "",$yourVar,"";
.
. Если я захочу эту строку записать в переменную вместо вывода в буфер, я просто поменяю echo
на $echo =
, а вам придется менять все запятые.for(...)
{
echo "<tr><td>".$data[$i]['cell1']."</td><td>".$data[$i]['cell2']. {...} ."</td></tr>";
}
Twig похож на встроенный в Django шаблонизатор
Using short tags should be avoided when developing applications or libraries that are meant for redistribution, or deployment on PHP servers which are not under your control, because short tags may not be supported on the target server. For portable, redistributable code, be sure not to use short tags.
{for category in category_tree}
{$category.name}
{endfor}
Вместо
{foreach from=$category_tree item=category}
{$category.name}
{/foreach}
<? foreach($category_tree as &$category): ?>
<?= $category->name ?>
<? endforeach; ?>
function render($template, $attributes = array()) {
extract($attributes);
ob_start();
ob_implicit_flush(0);
require "/dir/with/templates/" . $template . ".php";
ob_end_clean();
return ob_get_clean();
}
...
render("index", array("var1" => 1, "var2" => 2));
<?= $var2 ?>
<?= $var1 ?>
Подгружаем подшаблон <?= render("partial", array("var2" => $var2)) ?>
Symfony\Component\Templating
;-)<?php $this->extend('layout') ?>
Hello <?php echo $name ?>
{% block title %}
{{ parent() }}
— News
{% endblock %}
<? foreach($category_tree as $category): ?>
<?= $category->name ?>
<? endforeach; ?>
{% for category in category_tree %}
{{ category.name }}
{% endfor %}
<? if (count($category_tree)): ?>
<? foreach($category_tree as $category): ?>
<?= $category->name ?>
<? endforeach; ?>
<? else: ?>
No items in tree
<? endif; ?>
{% for category in category_tree %}
{{ category.name }}
{% else %}
No items in tree
{% endfor %}
<?php if (count($category_tree)): ?>
<?php foreach($category_tree as $category): ?>
<?php echo $category->name ?>
<?php endforeach; ?>
<?php else: ?>
No items in tree
<?php endif; ?>
<?php foreach($category_tree as $category): ?>
<?php echo $category->name ?>
<?php endforeach; ?>
<?php if (empty($category_tree)): ?>
No items in tree
<?php endif; ?>
while(false) {}
, цикл просто не выполнится.conf@conf ~ $ php -d error_reporting=-1 -d display_errors=1 -r ' echo "before\n"; foreach(array() as $item) { echo $item; } echo "after\n";'
before
after
conf@conf ~ $
«шорт»-тэги — зло. Об этом тысячи статей по всему интернету
Работая со Smarty, я привык к тому, что надо передавать все переменные в шаблон и уже там их выводить, вся обработка была в коде.
{$user->free_space()}
И третье это написание собственных расширений. Часто бывают нужны какие-то функции, не реализованные в шаблонизаторе. Расширяется twig крайне просто
Раньше я был ярым поклонником Smarty. У Smarty достаточно много достоинств, он распространен, с ним просто, он привычен и так далее. Но так вышло, что для одного из проектов Smarty оказался слишком уж тяжелым и слегка тормозным.и тогда я перешел на blitz
Twig: 0.17 секунд
Smarty 3.0.8: 1.86 секунд
Smarty 3.1 RC1: 1.83 секунды
Twig: 0.132 секунды
Smarty 3.0.8: 0.021 секунда
Smarty 3.1 RC1: 0.014 секунд
Как я перешел со Smarty на Twig