All streams
Search
Write a publication
Pull to refresh
35
0
Иван @Aco

Программист, Web-разработчик

Send message
Давайте на примере mongodb, так как у расширения очень удобный курсор-итератор, который в реальном времени подгружает результат запроса из бд во время итерации. Суть такова, в шаблон отдается курсоры-итераторы на начальном состоянии, которые не начали прохождение по результату, тем самым не потребляют память. В шаблоне идет итерации по курсорам с отрисовкой в output. Таким образом, насколько большой результат не был, курсор не будет превышать определенного размера. Вот тут главное что бы шаблонизатор не копил у себя output иначе это все бессмыслено. Надеюсь суть мне удалось передать.
ясно, шутку не оценили
Ну, авто экранирование уже сделано, а |raw добавляется легко в текущую архитектуру, написание тестов, как обычно, занимает больше времени
Даа, с трепером жду дино)
Совместимость есть, например в тестах Fenom запускал шаблоны smarty. Конечно, есть расхождения в использовании (например нет именованых циклов и тп, у Fenom это реализовано все по другому), но осоновные конструкции (if, foreach и т.п.) схожи.
Итераторами и ограничением количества данных в шаблон, отчего пришлось отказать от некоторых плюшек.
Конечно без xDebug, в самом начале я забыл выключить и когда тесты упали впомнил что установлен xDebug. В последствии выключил. При включенном xDebug все медленее работали где-то раза в 3.
Согласен. я всегда использользую goto в «области»
mark: {
    // ...
    goto mark;
    // ...
}

очеь читабельно и ясно
Да, сталкивался чаще чем хотелось. Я бы не заморачивался с этим если бы не столкнулся с проблемой. Для highload проекта любой магабайт опретивы и любой процент cpu важен, так как объемы данных занчительные, а производительность не должна падать.
Ааа, хм, не вижу проблем что бы добавить данную возможность. Просто сейчас макрос представляет из себя кусок кода который для производительности вставляется напрямую в код. Что ж, оформлю фичу на релиз
Не совсем понимаю о чем идет речь, но Fenom поддерживает макросы. Оно?
Все зависит от потребностей проекта. Если у вас не возникает проблем с шаблонами на PHP, то и шаблонизаторы вам не нужны. Например, в моем случае к шаблонам имеют доступы пользователи, давать им чистый PHP — значит дать мартышке гранату без чеки. Шаблонизатор в данном случае ограничивает пользователей и сводит к минимуму риски в пользовательских шаблонах.
Библиотека имеет дугой подход к шаблонизации, упрощенную иерархию, отенциал, легко расширяется, экономит ресурсы машины, есть свои идеи и минимальный набор для шаблонизации, что удобно для маленьких проектов. А иногда проекты создаются из-за того что это просто интересно и увлекательно создавать. Всегда приятно иметь выбор.
Я ничего не буду навязывать вам. Просто значит этот шаблонизатор не для Вас.
Здесь есть как плюсы так и минусы. Плюсы в том что на токены разбирает сам движок PHP, что получается очень быстро. Минус в том что оочень много мусорных токенов на выходе, приходится зачищать. Но у меня, как говорится, «палец на курке» — есть наработка токенайзера, который можетзаменить token_get_all если он станет не годным.
Голова разработчика может случиться, которая не даст просто взять и лапшойнаписать PHP код, ведь нужны классы, интерфейсы, абстакция и тд. Ни кто уже не пишет спагетти-код кроме шаблонизаторов. А такую вещь как наследование шаблонов на чистом спагетти PHP не получится реализовать.
Да, занимаюсь этим, в течении дня зарепортю. Дополнительно проверяю не кривые-ли это у меня руки)
Я полностью представляю для чего нужны шаблоны, просто я всегда знаю какие у меня данные. Fenom::AUTO_ESCAPE был добавлен только вчера, и, конечно, raw я еще не успел добавить.

Однако, в приведеном вами коде я заметил багу — модификатор должен был вставится как есть то есть
echo htmlspecialchars(\Fenom\Modifier::unescape($tpl["name"]), ENT_COMPAT, 'UTF-8');

Спасибо!
Все сложные конструкции реализуются на мелких конструкциях (вывод переменной, foreach), если мелкие конструкции тормозят то и сложные, следовательно, тоже будут тормозить.
да, самое сложное найти те самые реальные задачи, которые одинаково для всех шаблонизаторов можно реализовать. Тем не менее, по мере развития проекта я добавлю больше тестов и бенчмарков.

Information

Rating
5,387-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead
Golang
PHP
MySQL
MongoDB
Redis
Git
SQL