Комментарии 48
Чего тут удивляться? Тот же Twig по факту "компилит" шаблон в PHP код, да ещё и оптимизированный и вот он уже кешируется и запускается.
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
Опкеш и preload никто не отменял. И да, срезать время на предзагрузке — это нормальная идея. Ещё больше удастся получить если вместо Workerman взять Swoole или RoadRunner. Мы под это дело готовим Yii 3, результаты отличные.
www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=fortune&l=zik073-1r
О, значит у меня устаревшие данные. Спасибо.
Мы под это дело готовим Yii 3, результаты отличные.
Было бы круто запускать yii3 под workerman из коробки. Сейчас у меня есть свой велосипед для запуска yii2 из под workerman, но его трудно поддерживать.
Мы пришли к тому, что PHP сам по себе отличный шаблонизатор.
Помещаешь в скоуп нужные данные, включаешь буферизацию, инклудишь нужный шаблон, получаешь вывод в переменную. Не используем глобальные переменные и не пишем бизнес-логику внутри по договоренности
А еще не хватает возможности дать стороннему верстальщику доступ к коду не думая о безопасности и работоспособности и не объясняя ему основы php.
Да, у PHP многое отлично получается. Но нужно обязательно использовать фреймворк, потому что нужно использовать фреймворк.
Хотя я не большой эксперт по шаблонизаторам в php и почти уверен, что по сравнению с участниками вашего теста, у блица весьма скудный функционал.
Но посмотреть на бенчмарк было бы интересно :)
Он просто настолько стабилен и хорош, что все идеально работает и больше ничего добавлять не нужно!
Для меня принципиально было использовать нативный шаблонизатор, поэтому и Phalcon Volt не взял в тестирование.
А если бенчмарк приблизить к реальности? Ну там лайауты, эмбеды…
Мастерство представления масштабов на диаграмме — это вообще верх мастерства. Если сделать на графике диапазон от 30 до 50, то для некоторых шаблонизаторов будет казаться, что их производительность отрицательная.
В следующий раз можете попробовать в google spreadsheets.
Я там делаю, получается например вот так:
$html = '<html><head></head><body>';
foreach ($data as $message) {
$html .= "<p>$message->code : $message->message</p>";
}
$html .= '</body></html>';
делать
<html><head></head><body>
<?php foreach ($data as $message) { ?>
<p><?= $message->code ?> : <?= $message->message ?></p>
<?php } ?>
</body></html>
Такой подход мало чем отличается от прочих шаблонизаторов.
class Renderer
{
...
function render($viewPath, array $params = [])
{
extract($params);
include($viewPath);
}
...
}
Ну и использовать ob_* функции если надо вывод перехватить.
Вот так оно делается: https://github.com/yiisoft/view/blob/master/src/PhpTemplateRenderer.php#L9
gotz кстати, будет круто и наш view затащить. Пакет самостоятельный и, хоть к релиза ещё не было, вполне работает.
P.S. Я хочу сказать, что это не тот случай, когда следует беспокоиться о производительности. Ну выиграете вы с eval несколько лишних микросекунд (если, конечно, выиграете), толку с этого?
P.P.S. Ведь view все равно подключать надо как отдельный файл, или вы это в контроллере хранить собираетесь? И параметры ему распаковать тоже надо.
Вот этот шаблонизатор возможно заинтересует github.com/fenom-template/fenom
Вы бы могли использовать человеческий шрифт для взрослых людей?
И графики от нуля, а не для продажников.
Спасибо.
2 полифила — это много?
Странно что никто не упомянул Stempler
github.com/spiral/stempler
очень неплохая производительность особенно на больших шаблонах
И если альтернативу RoadRunner-у в наиболее частом его применении еще можно найти (конечно это зависит от задач), то вот CycleORM-у — нет (доктрина не всегда подходит).
Тоже самое и насчет Stempler-а — если нужен кастомный DSL, с большими сложными шаблонами, то альтернативы у него и нет — тот же Twig, который стандарт де факто, в некоторых извращенных случаях просто тормоз (даже со скомпилированными шаблонами)
Самый быстрый шаблонизатор для PHP