<rmcreative>

RSS

Fenom — yet another PHP template engine

4 июля 2013

На хабре выложили анонс шаблонизатора Fenom. К необходимости использования PHP-шаблонизаторов я отношусь довольно скептически. То ли мне не попадаются проекты, где конечному пользователю нужно дать доступ к шаблонам, то ли расстраивают накладные расходы... в общем, не сложилось у меня с ними.

Однако, Fenom порадовал. Выделяется он, как минимум, двумя вещами: производительностью и подходом. Автор плотно поработал над архитектурой и получил меньшее, чем у Smarty и Twig, количество классов и кода, меньшее потребление памяти и лучшую производительность.

UPD: на всякий случай ссылка на github.

Комментарии RSS

  1. №8130
    Spider
    Spider 04.07.2013, 13:07:09

    Ссылочку бы на гитхаб добавил, а то вдруг с Хабра статью выпилят

  2. №8133
    Sam
    Sam 04.07.2013, 14:10:17

    Spider, сомневаюсь, что выпилят, но на всякий случай добавил.

  3. №8134
    BOLVERIN
    BOLVERIN 04.07.2013, 23:21:44

    никогда не понимал смысл от дополнительного шаблонизатора по идее это должно упростить работу пользователя. но пользователь осиливший смарти вполне успешно справляется с условиями в php. да и когда это пользователю давали прямой доступ к редактированию шаблонов? это ведь почти самоубийство

    может делало вид кода менее топорным? ну в случае <?=$title?> = {$title} может и да, но чем дальше тем хитрожопее код для шаблонизатора и вся "красота", в лучшем случае, ограничивается заменой <?php на фигурную скобку

    и как бонус — нагрузка

  4. №8136
    SecondFrog
    SecondFrog 05.07.2013, 19:19:47

    Аналогично... Никогда не понимал, чем вот это

    {foreach from=$products item=product}
        {$product.name}<br>
    {/foreach}
    

    лучше вот этого

    <? foreach($products as $product) : ?>
    <?= $product['name']; ?><br>
    <? endforeach; ?>

    P.S. Код набирал "на коленке", показать общую идею...

  5. №8138
    Александр Кочетов
    Александр Кочетов 06.07.2013, 8:19:28

    @BOLVERIN, @SecondFrog

    Прежде чем писать о непонимании смысла шаблонизации не проще ли погуглить на тему зачем нужны шаблонизаторы, а также какие задачи и проблемы они решают. Если вы с такими задачами и проблемами ещё не сталкивались, то это не значит что шаблонизаторы совсем не нужны.

    @BOLVERIN

    и когда это пользователю давали прямой доступ к редактированию шаблонов? это ведь почти самоубийство

    Ну у кого самоубийство, у кого нет. Есть понятие secure templates, где через шаблон никаких деструктивных действий системе нанести не возможно.

  6. №8139
    Александр Кочетов
    Александр Кочетов 06.07.2013, 8:20:59

    @Sam

    и получил меньшее, чем у Smarty и Twig, количество классов и кода

    Значительно меньшее количество классов и кода ;)

  7. №8148
    Dmitry
    Dmitry 11.07.2013, 15:23:36

    Поддерживаю полностью автора поста, шаблонизаторы -говно. PHP сам по себе, отличный шаблонизатор, какие есть ярко выраженные недостатки у альтернативного синтаксиса управляющих конструкций?

  8. №8149
    Вячеслав
    Вячеслав 11.07.2013, 16:49:02

    Собрал Yii Fenom view renderer: www.yiiframework.ru/forum/viewtopic.php?uid=881&f=9&t=13087&start=0

    Замечания, правки и предложения приветствуются :-)

  9. №8150
    Александр Кочетов
    Александр Кочетов 11.07.2013, 18:57:09

    Поддерживаю полностью автора поста, шаблонизаторы -говно.

    Автор сказал, что всего лишь прохладен к шаблонизаторам. Я думаю если бы он сказал неполиткорректно, что все они говно, то в комментах бы началась небольшая гражданская война )

    какие есть ярко выраженные недостатки у альтернативного синтаксиса управляющих конструкций?

    Небезопасность, многословность.

  10. №8156
    Dmitry
    Dmitry 13.07.2013, 0:37:11

    Небезопасность, многословность.

    это все не существенно

  11. №8157
    Александр Кочетов
    Александр Кочетов 13.07.2013, 3:36:31

    @Dmitry А что тогда вообще для вас есть понятие "существенно" ?

  12. №8182
    WinterSilence
    WinterSilence 21.07.2013, 5:32:36

    Никак не могу найти как передавать данные(переменные) в шаблон(ищу аналог assign\append из smarty)? или передать можно только при создании объекта или рендеринге ?

    Шаблонизаторы в первую очередь для коммерческих cms т.к. верстальщикам\сеошникам не хватает навыков для работы с нативными видами, а декоративный код шаблонизаторов они вполне усваивают. Кто-то скажет это их проблемы, но не стоит забывать, что речь о коммерческих проектах и чем они проще в обслуживании(а значит вокруг них крутится больше "разработчиков"), тем больше покупателей.

    Сам я использую допиленный под себя raintpl, тоже очень маленький и шустрый + названия методов схожи со smarty.

    В проектах имеющих сложную структуру очень сложно работать\разбираться в нативных вьюхах - менее читабельно и более грамостко. По поводу производительности у меня в 70% отрабатывает либо первичный(php код созданный на основе tpl), либо вторичный(html) кеш, так что особой нагрузки со стороны даже такого тяжеловеса как смарти я особо нигде не ощутил. Тем более никто не мешает кастомизовать шаблонизатор под себя отключив весь ненужный функционал.

  13. №8739
    Паша
    Паша 07.01.2014, 7:23:21

    Оставляя за рамками обсуждения разделение прав на редактирование шаблона и выполнение PHP на сервере - мне просто удобней и приятней верстать страницы с использованием шаблонизаторов.

    Код - сравните это

    <?if (isset($array['key1']['key2']['key3'])):?>
        <?foreach ($array['key1']['key2']['key3'] as $item):?>
            <?=mb_strtoupper(mb_substr(htmlspecialchars($item, ENT_QUOTES, 'UTF-8'), 0, 50))?>
        <?endforeach;?>
    <?else:?>
        There are no records
    <?endif;?>

    и это

    {foreach $array.key1.key2.key3 as $item}
        {$item}
    {foreachelse}
        There are no records
    {/foreach}

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

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.