Jun 14

Още в първите дни след като почнах да пиша PHP, преди 6-7 години, реших че е грозно да имаш разни <?php ?> из кода HTML кода ти и предпочитах там да са само променливите в този вид {$name}. Което се оказа доста полезен и правилен ход. Така намерих Smarty.

Напоследък(в последните 2 години) забелязвам че много хора решават да се отказват от Smarty и да ползват PHP като template engine(какъвто е бил първоначалния му замисъл). Но за мен просто с нормалните <?php ?> става твърде грозно и особено CSS/HTML дивелопърите (ако някой знае по-добро име за тях), не ги приемат за разлика от чистото {$name}.

Основните плюсове на Smarty са:

  1. За разлика от повечето PHP template engine-и Smarty “компилира” кода на темлеитите до нормален PHP код. Но това остава “скрито” от хората и може да се контролира от настройките чрез compile_check и force_compile
  2. Smarty си има вложене security sandbox.
  3. Вграден cаche модул.
  4. Великолепна plugin система. Като в нея има вложени function | modifiers | blocks | compilers и още …
  5. Много лесно се свиква със Smary и доста голяма част  от  CSS/HTML дивелопърите се “разбират” много добре с него.
  6. По-красиво е ползването на нормално php

Но това което наистина ми харесва е plugin системата която ти позволява да правиш това(е директно копирано от работещ проект):

{pagination separator="|" page=p}
<a href="{$p.url}" {if $p->isCurrent()} class="selected" {/if}>{$p.num}</a>
{/pagination}

{paginator} и мой плъгин, а {$p} e обект. Това би трябвало това написано на “чист” php ще е нещо такова(тъй като отдавна не съм писал директно PHP във view може и аз да бъркам някъде).

<?php foreach($pages as $p): ?>
<a href="<?php echo $p['url']; ?>"<?php if ($p->isCurrent()) echo ' class="selected"'; ?>><?php echo $p['num'];</a>
<?php endforeach; ?>

или

foreach($pages as $p){
echo '<a href="', $p['url'], '">';
if ($p->isCurrent()) echo ' class="selected"';
echo '>', $p['num'], '</a>';
}

– no comment –

п.п. Преди 1-2 седмици попаднах на това DWOO. Поне от първите ми опити това ми прилича на достойния наследник на Smarty.

Какво мислите по въпроса