Pull to refresh
161
1
Рыбак Алексей @fisher

Пользователь

Send message
ну я ж этого не говорил. что ваши, что не по-настоящему - нет, дело в другом. я вот, например, как только у меня перед глазами возникала конструкция вида switch или нескольких if/elseif, которые внутри разрываются добротным куском html, внутри которого тоже есть какие-то свои if - вот я всегда чуствовал себя крайне подавленным, смотря на такой код.

что касается примера - представьте себе, как выглядит шаблон примерно с такой историей. сначала это просто элемент списка с к раткой информацией по профайлу ползователя. затем, вы должны написать, сколько у этого человека фотографий, а если нет фотографий, то не писать. а потом ещё появилось видео - и над писать скока видео. или если он в онлайн или был не более стольких-то минут назад онлайн, то надо написать жирно - он щас онлайн, а если был тогда-то - то в другим оформлении был в онлайн тогда-то. а ещё есть хитрые посетители у них ваще неизвестно когда был онлайн по историческим причинам - им надо написать особенный текст. а ещё если ему можно отправить какую-нибудь "симпашку", или "мессадж" - и надо вывести такие иконки, но не всем. если вы аноним, а юзер выбрал с "анонимами не общаюсь!", тогда иконок быть не должно. и я могу продолжать бесконечно. это всё на какой-то чертов мелкий элемент списка юзеров.
ну, доктора говорят так. если вам хорошо, то даже если вам вдруг кажется, что кто-то считает, будто это наоборот совсем никуда - не парьтесь, они просто ничего не понимают. но если серьезно, то я не понял вопроса :)))))
стандартный синтаксис превращает сложный (по-настоящему) шаблон в мясо полное. это одна из самых больших удач и ошибок изобретателей PHP - дать девелоперу мешать HTML и PHP-код.
Известно. Просто Вы не читали ;)

Что касается немаленького набора классов - в контексте того, что blitz это модуль к PHP на Си я не очень понимаю вопроса о "нативный" функциях. Рациональное зерно однако в Ваших рассуждениях есть, но следует четко понимать все-таки на что тратится время. Если мы пишем шаблоны на обычном PHP, то есть условно говоря при сборке шаблонов задействованы лишь операции с переменными (то есть над памятью), то мы получим идеальную скорость. Такого обычно конечно же не происходит, мы бьём файлы на более мелкие, и стараемся как-то организовать наш код. Как только у нас появляются какие-нибудь инклюды - мы имеем оверхед на работу с файловой системой, пусть оно и оседает мгновенно в кеше - но если поизучать внимательнее, видно, что это несколько системных вызовов, которые конечно накапливаются в существенный довесок при сборке страницы, если она сложная. blitz не избавляет от этого, и blitz никогда не будет быстрее php mess, что я специально подчеркиваю с бенчмарках. Однако blitz позволяет не сильно "убить" систему при переходе на более грамотно организованный код в нагруженном проекте. Например, blitz позволяет компактно упаковать в один шаблон несколько независимых блоков, которые будут использованы при сборке, в то время как сделать такое на PHP "красиво" невозможно (либо это будут разные файлы - и потеря скорости, либо функции-хелперы, которые замешают PHP-код и HTML-код).
3. про vLib Templates - я конечно просто не в состоянии добавлять в тест вообще все шаблонизаторы, особенно те, с которыми не знаком сам. методика тестирования известна, код для тестирования есть - каждый может добавить туда свой любисый шаблонизатор (обычно это занимает минут 5-10) - присылаете мне, я гоню тест и обновляю. так на меня выходило несколько девелоперов и я добавлял движки какие они просили в тест
делаем блок и итерируем его в коде view-контроллера.

в шаблоне <!-- BEGIN READ_MORE --><a href="{{ $news_url }}">Читать дальше</a><!-- END -->
в коде $View->block('READ_MORE', $vars);
ну а вот этот тест кстати при большом уважении к автору довольно сильно оторван от реальности
1. кеширование не входит в обязанности шаблонизатора
2. скорость важна только для проектов где всё затюнено и cpu usage на вебах начинает играть существенную роль.
про конкурентные запросы и утилизацию ресурсов - хорошие замечания, я просто поленился. это довольно кропотливая работа и если проводить измерения аккуратно для всех движков я бы потратил слишком много времени которого нет - надо автоматизировать, короче времени на это пока нет. да и будет ли особенный смысл неясно - так как приложение приложению рознь.
исходные коды приведены, методика описана - можете изучать. эта методика на мой взгляд наиболее приближена к реальзой жизни из всех мне когда-либо встречавшихся :)
не в разы, но быстрее, насколько - зависит от сложности приложения (чем сложнее - тем быстрее).
blitz запрещает многое из того, что позволяет php и smarty. то, что Вы предлагаете - это фактически сделать аналог smarty но как модуль к PHP. задача хорошая но мне сейчас совершенно неинтересная, хотя я прекрасно понимаю, насколько это было бы приятнее, доступнее и популярнее.
if есть, но в простой форме псевдо-функции типа
if($is_active,'#ffffff', '#eeeeee')
а вот сложные вложенные конструкции запрещены
не понимаю а че там должно быть сложного с прослойкой?
наоброт цель была сделать поддержку больших проектов проще
а что в смарти что в пхп такое мясо наворотишь потом и с поллитрой не разберешься, особенно если не сам, а отдаешь кому-то начинающему или кто в программинге не очень шарит.
да, операций конкатенации нет. и тоже есть такие реквесты, иначе народ обходится своими обертками вида

function my_include($name, $params) {
$full_path = ... // prepare full path
return $this->include($full_path);
}


но это медленнее
многие например вообще не используют include в HTML коде, всё делают переменными, а внутри вьюхи эти переменные инициализируют - либо парсят отдельные шаблоны, либо фетчат блоки. так шаблоны совсем простые получаются.
как такового ченжлога на сайте никогда не было
надо качать дистрибутив и читать ченжлог внутри
если это баги - о них надо не стесняться писать девелоперам. в первоначальных версиях такие косяки действительно были - даже не косяки, я просто типа считал "нафиг надо"
2. BEGIN/END перебить нельзя. можно перебить теги {{, }} а также альтернативные тэги <!--, --> и префикс переменной ($). плюс по умолчанию переменные можно не префиксовать вовсе.
1. там небольшой гемор с парсингом он посроен на старом коде php_templates но в blitz есть просто открывающий и закрывающий тэг, а все прочие конструкции языка определяются лексемами внутри тэга. а в php_templates есть отдельные тэги для открытия-закрытия контекстов, и для прочего. соотвественно если писать поддержку ещё и нативную php_templates то это просто лишние поиски и дополнительные операции. оно быстрое но все равно зачем. проще написать конвертор, он элементарный например
<tmpl:name> в <!-- BEGIN name -->
</tmpl:name> в <!-- END name > или просто <!-- END -->

Information

Rating
1,564-th
Location
Россия
Date of birth
Registered
Activity