<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TWIG - Гибкий, быстрый и безопасный шаблонизатор для PHP</title>
	<atom:link href="http://twig.kron0s.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://twig.kron0s.com/blog</link>
	<description>Очередной блог на WordPress</description>
	<lastBuildDate>Sun, 27 Nov 2011 20:39:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Вышел Twig 1.4.0-RC2</title>
		<link>http://twig.kron0s.com/blog/2011/11/27/twig-1-4-0-rc2-released/</link>
		<comments>http://twig.kron0s.com/blog/2011/11/27/twig-1-4-0-rc2-released/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 20:39:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=99</guid>
		<description><![CDATA[I’ve just released Twig 1.4.0 RC2. Like RC1, it focuses on performance with some nice tweaks. The biggest change is that Twig now comes with an optional C extension that you can install to enhance the runtime performance of Twig templates (it overrides the Twig_Template::getAttribute() method by a C implementation). Please try out this release [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve just released Twig 1.4.0 RC2.</p>
<p>Like RC1, it focuses on performance with some nice tweaks. The biggest change is that Twig now comes with an <em>optional</em> C extension that you can install to enhance the runtime performance of Twig templates (it overrides the <code>Twig_Template::getAttribute()</code> method by a C implementation).</p>
<p>Please try out this release candidate on your current projects; and be sure to<br />
<a href="https://github.com/fabpot/Twig/issues/new" target="_blank">report</a> any regressions or bugs<br />
before we mark this release as stable.</p>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/11/27/twig-1-4-0-rc2-released/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Вышел Twig 1.1.1</title>
		<link>http://twig.kron0s.com/blog/2011/07/24/twig-1-1-1-released/</link>
		<comments>http://twig.kron0s.com/blog/2011/07/24/twig-1-1-1-released/#comments</comments>
		<pubDate>Sun, 24 Jul 2011 05:46:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=68</guid>
		<description><![CDATA[Вышел Twig 1.1.1. В этой версии была неплохо улучшена производительность. И не забудьте очистить кэш после обновления.]]></description>
			<content:encoded><![CDATA[<p>Вышел Twig 1.1.1. В этой версии была неплохо улучшена производительность.</p>
<p>И не забудьте очистить кэш после обновления.</p>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/07/24/twig-1-1-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Twig 1.1.0</title>
		<link>http://twig.kron0s.com/blog/2011/07/09/twig-1-1-0-released/</link>
		<comments>http://twig.kron0s.com/blog/2011/07/09/twig-1-1-0-released/#comments</comments>
		<pubDate>Sat, 09 Jul 2011 02:37:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=65</guid>
		<description><![CDATA[Twig 1.1.0 доступен для скачивания]]></description>
			<content:encoded><![CDATA[<p>Twig 1.1.0 доступен для скачивания</p>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/07/09/twig-1-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Twig 1.1 RC2</title>
		<link>http://twig.kron0s.com/blog/2011/06/17/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-1-rc2/</link>
		<comments>http://twig.kron0s.com/blog/2011/06/17/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-1-rc2/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 06:40:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=63</guid>
		<description><![CDATA[Вышел Twig 1.1 RC2. В этой версии исправлено несколько ошибок RC1. Пожалуйста, примите участие в тестировании этой версии и сообщите о любых найденных багах.]]></description>
			<content:encoded><![CDATA[<p>Вышел Twig 1.1 RC2. В этой версии исправлено несколько ошибок RC1. Пожалуйста, примите участие в тестировании <a href="http://www.twig-project.org/installation">этой версии</a> и <a href="https://github.com/fabpot/Twig/issues">сообщите</a> о любых найденных багах.</p>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/06/17/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-1-rc2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Twig 1.1 RC1</title>
		<link>http://twig.kron0s.com/blog/2011/06/16/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-1-rc1/</link>
		<comments>http://twig.kron0s.com/blog/2011/06/16/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-1-rc1/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 17:16:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=55</guid>
		<description><![CDATA[Вот, наконец-то, и вышел Twig 1.1 RC1, и, надеюсь, скоро выйдет финальный релиз. В Twig 1.1 исправлено несколько мелких ошибок, но главное &#8211; это добавление следующего функционала: Улучшен контроль пробелов: Пробелы между HTML тэгами удаляются с помощью тэга spaceless, но как же быть с пробелами возле тэгов Twig? Теперь можно удалять пробелы до или после [...]]]></description>
			<content:encoded><![CDATA[<p>Вот, наконец-то, и вышел Twig 1.1 RC1, и, надеюсь, скоро выйдет финальный релиз. В Twig 1.1 исправлено несколько мелких ошибок, но главное &#8211; это добавление следующего функционала:</p>
<ul>
<li>Улучшен контроль пробелов: Пробелы между HTML тэгами удаляются с помощью тэга <code>spaceless</code>, но как же быть с пробелами возле тэгов Twig? Теперь можно удалять пробелы до или после тэгов Twig просто добавив &laquo;<code>-</code>&raquo; с нужной стороны тэга. Вы можете почитать об этом в <a href="http://www.twig-project.org/doc/templates.html#whitespace-control">документации</a>.</li>
<li>Поддерживается горизонтальное повторное использование: Горизонтальное повторное использование позволяет сделать то же самое что множественное наследование, но проще. Дополнительная информация в <a href="http://www.twig-project.org/doc/templates.html#horizontal-reuse">документации</a>.</li>
<li>Улучшены отчеты об ошибках: Twig выдает имя файла и строку, где на самом деле произошла ошибка, когда это возможно. Это значительно упрощает отладку. Собственно, <a href="http://twig.kron0s.com/blog/2011/04/15/twig-1-1-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%be%d1%82%d1%87%d0%b5%d1%82%d0%be%d0%b2-%d0%be%d0%b1-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b0%d1%85/">здесь</a> написано подробнее.</li>
</ul>
<p>Обновляйтесь Twig до 1.1! Только не забудьте очистить кэш.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/06/16/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-1-rc1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twig 1.1: Улучшение отчетов об ошибках</title>
		<link>http://twig.kron0s.com/blog/2011/04/15/twig-1-1-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%be%d1%82%d1%87%d0%b5%d1%82%d0%be%d0%b2-%d0%be%d0%b1-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b0%d1%85/</link>
		<comments>http://twig.kron0s.com/blog/2011/04/15/twig-1-1-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%be%d1%82%d1%87%d0%b5%d1%82%d0%be%d0%b2-%d0%be%d0%b1-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b0%d1%85/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 23:06:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=51</guid>
		<description><![CDATA[Понятные сообщения об ошибках одна из сильных сторон Twig, особенно, когда речь идет о синтаксических ошибках в шаблонах. Теперь эти сообщения стали еще лучше. Во-первых, Twig 1.1 добавляет название шаблона и номер строки, в которой произошла ошибка, в сообщение о ней (даже если исключение вызвано не Twig &#8211; ниже подробнее об этом). И это очень [...]]]></description>
			<content:encoded><![CDATA[<p>Понятные сообщения об ошибках одна из сильных сторон Twig, особенно, когда речь идет о синтаксических ошибках в шаблонах. Теперь эти сообщения стали еще лучше.</p>
<p>Во-первых, Twig 1.1 добавляет название шаблона и номер строки, в которой произошла ошибка, в сообщение о ней (даже если исключение вызвано не Twig &#8211; ниже подробнее об этом). И это очень удобно при отладке.</p>
<p>Далее, когда бросалось исключение во время обработки шаблона, довольно проблематично было узнать, откуда оно было вызвано.</p>
<p>Это из-за того, что Twig не перехватывал исключения и поэтому сообщение об ошибке указывало на место, где рендериться шаблон (скорее всего &#8211; в контроллере). Конечно, всегда можно посмотреть на стек исключений PHP, и увидеть, что ошибка содержится, к примеру, в скопилированном файле, а не в оригинальном шаблоне. Это хорошо для разработчиков PHP, но никак не для верстальщика.</p>
<p>Twig 1.1 убрал эту проблему, теперь все исключения рендеринга шаблонов содержат информацию о том, где они произошли в оригинальном файле шаблона.</p>
<p>Рассмотрим следующий шаблон:</p>
<pre><code>{{ foo.bar }}</code></pre>
<p>Где <code>Foo</code> выглядит так:</p>
<pre><code>
class Foo

{

public function bar()

{

throw new Exception('Ошибка вызова bar.');

}

}
</code></pre>
<p>Сообщение об ошибке в Twig 1.0:</p>
<pre><code>Uncaught exception 'Exception' with message 'Ошибка вызова bar.' in .../controller.php:22</code></pre>
<p>И сообщение об ошибке в Twig 1.1:</p>
<pre><code>Next exception 'Twig_Error_Runtime' with message 'An exception has been thrown during the rendering of a template ("Ошибка вызова bar.") in "index" at line 13.'</code></pre>
<p>И еще лучше с PHP 5.3, где исключения Twig можно обрабатать вашим кодом.</p>
<p>Я уверен что вам понравятся эти изменения, так как они безусловно могут повысить производительность.</p>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/04/15/twig-1-1-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%be%d1%82%d1%87%d0%b5%d1%82%d0%be%d0%b2-%d0%be%d0%b1-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b0%d1%85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Twig 1.0.0!</title>
		<link>http://twig.kron0s.com/blog/2011/03/31/twig-1-0-0-released/</link>
		<comments>http://twig.kron0s.com/blog/2011/03/31/twig-1-0-0-released/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 07:24:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=45</guid>
		<description><![CDATA[Наконец-то вышел долгожданный финальный релиз Twig 1.0.0. С релиза RC2 были исправлены один major баг (при использовании песочницы, все вызовы методов дублировались) и два minor бага. Теперь ведется работа над Twig 1.1]]></description>
			<content:encoded><![CDATA[<p>Наконец-то вышел долгожданный финальный релиз Twig 1.0.0.<br />
С релиза RC2 были исправлены один major баг (при использовании песочницы, все вызовы методов дублировались) и два minor бага. Теперь ведется работа над Twig 1.1</p>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/03/31/twig-1-0-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Twig 1.0.0-RC2</title>
		<link>http://twig.kron0s.com/blog/2011/02/21/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-0-0-rc2/</link>
		<comments>http://twig.kron0s.com/blog/2011/02/21/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-0-0-rc2/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 20:52:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=40</guid>
		<description><![CDATA[Рад сообщить, что вышел второй релиз-кандидат Twig 1.0.0. В этом релизе исправлены некоторые ошибки, код использующий библиотеку должен работать без каких-либо изменений. Если не будет найдено никаких существенных ошибок, через несколько дней выйдет окончательная версия Twig.]]></description>
			<content:encoded><![CDATA[<p>Рад сообщить, что вышел второй релиз-кандидат Twig 1.0.0. В этом релизе исправлены некоторые ошибки, код использующий библиотеку должен работать без каких-либо изменений. Если не будет найдено никаких существенных ошибок, через несколько дней выйдет окончательная версия Twig.</p>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/02/21/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-1-0-0-rc2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twig 1.0.0-RC1</title>
		<link>http://twig.kron0s.com/blog/2011/02/01/twig-1-0-0-rc1-released/</link>
		<comments>http://twig.kron0s.com/blog/2011/02/01/twig-1-0-0-rc1-released/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 20:27:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=38</guid>
		<description><![CDATA[Наконец то вышел долгожданный первый RC Twig 1.0, что положит начало циклу релизов версии 1.0. Это значит что отныне будет сохраняться обратная совместимость. Кроме многочисленных мелких оптимизаций и улучшения вывода сообщений об ошибках (смотрите лог изменений), этот релиз содержит две важные особенности: функции и глобальные переменные. Они очень упрощают использование Twig). Функции Twig имеет много [...]]]></description>
			<content:encoded><![CDATA[<p>Наконец то вышел долгожданный первый RC Twig 1.0, что положит начало циклу релизов версии 1.0. Это значит что отныне <strong>будет сохраняться обратная совместимость</strong>.</p>
<p>Кроме многочисленных мелких оптимизаций и улучшения вывода сообщений об ошибках (смотрите <a href="http://github.com/fabpot/Twig/raw/master/CHANGELOG" target="_blank">лог изменений</a>), этот релиз содержит две важные особенности: <em>функции</em> и <em>глобальные переменные</em>. Они очень упрощают использование Twig).</p>
<h2>Функции</h2>
<p>Twig имеет много возможностей для расширения и каждый релиз их увеличивает. Две наиболее распространенные &#8211; <em>фильтры</em> и <em>тэги</em>. Фильтры очень легко сделать, но они могут только преобразовывать значение; добавить тэг сложнее, да и реже необходимо, так как они определяют структуру языка (которая меняется не очень часто).</p>
<p>До сих пор тэги использовались, если надо было добавить какой-либо сложный функционал в шаблоны (в том числе и в ядро Twig). Теперь, с введением <em>функций</em>, ситуация изменилась.</p>
<p>Функции Twig похожи на функции PHP. Они похожи на макросы (macro), но определенные в PHP коде. Это позволяет легко добавлять новые функции, <em>генерирующие содержание</em>. Рассмотрим два примера, где тэг и фильтр были преобразованы в функции:</p>
<pre><code>{# range() это скорее не фильтр, а функция преобразующая аргумент в другое значение #}
{# 1 это первый аргумент фильтра #}
{% for in 1|range(10) %}

{# теперь range это функция, генерирующая массив #}
{% for i range(1, 10) %}

{# display это все же не языковая конструкция, а способ отобразить блок #}
{% display title %}

{# функция block теперь отображает содержимое блока #}
{{ block('title') }}
</code></pre>
<p>Функции можно спокойно использовать в любых выражениях:</p>
<pre><code>{{ range('a', 'z')|join(', ') }}
</code></pre>
<p>Список всех фильтров и тегов которые были преобразованы в функции в Twig 1.0 RC1:</p>
<table border="1" class="docutils">
<tr>
<th><em>До</em></th>
<th><em>После</em></th>
</tr>
<tr>
<td>
    <code>{% for in 1|range(10) %}</code>
</td>
<td>
    <code>{% for i range(1, 10) %}</code>
</td>
</tr>
<tr>
<td>
    <code>{% if status is "Post::PUBLISHED"|constant %}</code>
</td>
<td>
    <code>{% if status is constant("Post::PUBLISHED") %}</code>
</td>
</tr>
<tr>
<td>
    <code>{{ ['odd', 'even']|cycle(i) }}</code>
</td>
<td>
    <code>{{ cycle(['odd', 'even'], i) }}</code>
</td>
</tr>
<tr>
<td>
    <code>{% parent %}</code>
</td>
<td>
    <code>{{ parent() }}</code>
</td>
</tr>
<tr>
<td>
    <code>{% display title %}</code>
</td>
<td>
    <code>{{ block('title') }}</code>
</td>
</tr>
</table>
<h2>Глобальные переменные</h2>
<p>Иногда бывает нужно определить переменную, которая будет всегда доступна в шаблоне:</p>
<pre><code>// Глобальная переменная может быть константой
$twig-&gt;addGlobal('pi', 3.14);

// или любой переменной PHP, например, объектом:
$twig-&gt;addGlobal('request', new Request());
</code></pre>
<p>Глобальные переменные используются в шаблонах точно так же как и обычные:</p>
<pre><code>{{ pi }}

{{ request.params('name') }}
</code></pre>
<h2>Способы расширения Twig</h2>
<p>Теперь, при желании расширить Twig, имейте в виду следующее:</p>
<table border="1" class="docutils">
<colgroup>
<col width="14%">
<col width="37%">
<col width="14%">
<col width="35%"></colgroup>
<thead valign="bottom">
<tr>
<th class="head">Что?</th>
<th class="head">Как сложно?</th>
<th class="head">Как часто?</th>
<th class="head">Когда?</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td><em>макросы</em></td>
<td>легко</td>
<td>часто</td>
<td>Генерация контента</td>
</tr>
<tr>
<td><em>глобальные переменные</em></td>
<td>легко</td>
<td>часто</td>
<td>Хелперы</td>
</tr>
<tr>
<td><em>функции</em></td>
<td>легко</td>
<td>часто</td>
<td>Генерация контента</td>
</tr>
<tr>
<td><em>фильтры</em></td>
<td>легко</td>
<td>часто</td>
<td>Изменение значений</td>
</tr>
<tr>
<td><em>тэги</em></td>
<td>сложно</td>
<td>редко</td>
<td>Изменение структуры языка</td>
</tr>
<tr>
<td><em>проверки</em></td>
<td>легко</td>
<td>редко</td>
<td>Булевы структуры</td>
</tr>
<tr>
<td><em>операторы</em></td>
<td>легко</td>
<td>редко</td>
<td>Изменение значений</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/02/01/twig-1-0-0-rc1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Twig 0.9.10</title>
		<link>http://twig.kron0s.com/blog/2011/01/30/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-0-9-10/</link>
		<comments>http://twig.kron0s.com/blog/2011/01/30/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-0-9-10/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 14:11:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://twig.kron0s.com/blog/?p=28</guid>
		<description><![CDATA[Вот и пришло время нового релиза Twig. И я надеюсь, что он последний, перед версией 1.0. Обратите внимание, скоро информация о различиях версий будет удалена из документации. Так что сейчас самое время перейти на последнюю версию Twig и подготовиться к выходу 1.0. Как обычно, полный список изменений. В этом посте описаны только самые важные. Обратная [...]]]></description>
			<content:encoded><![CDATA[<p>Вот и пришло время нового релиза Twig. И я надеюсь, что он последний, перед версией 1.0.</p>
<p>Обратите внимание, скоро информация о различиях версий будет удалена из документации. Так что сейчас самое время перейти на последнюю версию Twig и подготовиться к выходу 1.0.</p>
<p>Как обычно, полный <a href="http://github.com/fabpot/Twig/raw/master/CHANGELOG" target="_blank">список изменений</a>.</p>
<p>В этом посте описаны только самые важные.</p>
<h2>Обратная несовместимость</h2>
<h3>Новый синтаксис обычных и ассоциативных массивов</h3>
<p>Изменен синтаксис обычных и ассоциативных массивов:</p>
<ul>
<li>
<p>Обычные массивы по прежнему можно определить с помощью квадратных скобок: <code>[1, 2]</code>;</p>
</li>
<li>
<p>Ассоциативные массивы теперь определяются с помощью круглых скобок: <code>{"a":<br />
"b"}</code> вместо <code>["a": "b"]</code>;</p>
</li>
<li>
<p>Обычные массивы с ключами и ассоциированные без ключей больше не поддерживаются: <code>[1, "foo": "bar"]</code> или <code>{"foo": "bar", 1}</code>.</p>
</li>
</ul>
<h3>Экранирование</h3>
<p>Расширение Escaper теперь включено по умолчанию, что означает экранирование всех переменных.</p>
<p>Экранирование можно отключить выставив опцию <code>autoescape</code> равную false:</p>
<pre><code>$env = new Twig_Environment($loader, array('autoescape' =&gt; false));
</code></pre>
<p>Или вы можете удалить расширение Escaper (тэг <code>autoescape</code> больше не существует):</p>
<pre><code>$env-&gt;removeExtension('escaper');
</code></pre>
<h3>Расширение i18n</h3>
<p>Расширение i18n перемещено в репозитарий расширений Twig</p>
<h3>Прочее</h3>
<p>Удален атрибут <code>without loop</code> из тега <code>for</code>, так как теперь для этого есть расширение Optimizer (см ниже).</p>
<h2>Новые фичи</h2>
<h3>Optimizer</h3>
<p>Новое расширение Optimizer (которое по умолчанию подключено) оптимизирует шаблоны до их компиляции. На сегодняшний день он делает 2 вещи:</p>
<ul>
<li>
<p>Удаляет создание переменной в цикле <code>for</code>, если вы ее не используете;</p>
</li>
<li>
<p>Удаляет фильтр <code>raw</code>, который нужен только для того чтобы корректно работало экранирование.</p>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twig.kron0s.com/blog/2011/01/30/%d0%b2%d1%8b%d1%88%d0%b5%d0%bb-twig-0-9-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

