[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Шаблонизатор.
Страницы: 1, 2
twin
Arh
Цитата
К чему я это всё. К тому, что посмотрел я на всякие <!--// table parent -->, $tpl->setBlock('table'); и понял, что у твина пошла мысль не в том направлении sad.gif
Ну у нас просто разные направления))) Если бы ты знал, что такое "наследования шаблонов", то понял бы, зачем это нужно. Шаблнизатор, это вовсе не скрипт, который заменяет псевдотеги переменными. Шаблонизатор призван разделять бизнесс-логику с логикой приложения. Я просто вывел всю логику из шаблона на сторону PHP. И это основная идея.
Цитата
что бы не вешать процессор регуляркой, необходимо компилировать шаблоны (кстати кэш и компиляция немного разные вещи)
Да разные то они разные, но факт в том, что при грамотном кэшировании никакой компиляции нафиг не нужно.
Цитата
если вы читали тему, вы поймете зачем я убирал вывод ошибок, хотя я за то что бы они выводились, просто смысл выводить переменную, если её нет.
Просто мысль пошла не по той колее =)
Не по той, соглашусь smile.gif Дело в том, что отключение ошибок и автоматическая инициализация - совершенно разные вещи. Ошибки ты отключаешь везде, а у меня только в шаблне.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Oyeme
Цитата (twin @ 8.06.2014 - 02:00)
Oyeme
1, 2, 4, 5.
По поводу trigger_error и собачек наверняка вопросы? У каждого своё мнение. Своё я высказал тут и тут. Раньше я тоже боялся дуть на воду, не юзал собак и косо смотрел на trigger_error. Теперь я взрослый мальчик и бабушкиных пугалок не боюсь больше. Впрочем как и с eval(). Её боятся только те, кто не доверяет себе и своему коду. Вот если покажешь мне эксплойт, тогда это будет серьёзный разговор не мальчика, но мужа.

3, 6. Тут ничего я не понял, в чем претензия?

7. Ну да, тут ты прав. С фантазией напряженка. Часто пишу такие названия, чтобы мысль не потерять, а потом переименовываю в нормальные. А часто и забываю... Тут исправлю конечно.

И про стиль я не понял, где там грязь? Можно поподробнее?

В вашем случаи trigger_error выкидывает сразу ошибку,а я ее даже обработать не могу.

@ - ошибки нужно обробатывать ,а не подавлять их.В огромной проекте с тысячами файлов Вы убьетесь искать где же была ошибка.

Это тоже самое спользования go to


3.Используйте константы.Это плохой тон все вшивать.

Про стиль - У Вас вообще нет комминтариев и не важно на сколько проста Ваша логика.И почитайте об стандартах когда Вы пишите библиотеки на публичный доступ.(Например symfony/zend)

П.С стандарты сделанны чтобы Все были на одной волне,а не писали как им удобно.Это считается хорошим тоном.

В них же Вы описываете почему Вы используете "это" а не "то".

Про eval() ,кто-нибуль встроит Вашу библиотеку в себе код,и через строку в шаблоне сможет делать все что угодно.
twin
Про собачки - я дал ссыку, чтобы не повторяться. Конечно, не особо тешил себя иллюзиями, что кто то будет вникать :D. Хорошо, повторюсь.

Собачка там стоит не просто так, от лени. Собачка там очень даже полезна. Потому что можно конечно было написать так:
        if(file_exists($this->path))
$this->tpl = file_get_contents($this->path)
else
trigger_error('IRB_Template error: template '
. $this->path .' not found');
Но. Вопервых это в два раза больше кода, хотя не суть. Важнее другое. Это два обращения к файловой системе. А ради чего? Ради того, что кто-о где-то сказал, что собака - зло? Ну ладно, если это говорит новичек, начитавшийся "PHP для чайников". Но такой специалист то должен бы вникнуть... По мне, так такой код куда как чище и оптимальнее:
        if(!$this->tpl = @file_get_contents($this->path))
trigger_error('IRB_Template error: template '
. $this->path .' not found');

Второе место, где юзается собака, это работа с элементами массива. Ну нет начального значения, конкатенация вызовет нотис. Да, и тут можно было написать так:
        if(!isset($this->parsed_blocks[$block_tag]))
$this->parsed_blocks[$block_tag] = '';

$this->parsed_blocks[$block_tag] .= $block;
Однако какой в этом смысл? Раздувать код, когда можно элементарно заменить эту проверку локальным подавлением ошибки:
        @$this->parsed_blocks[$block_tag] .= $block;
Ну вот для чего мне обрабатывать этот нотис, тут коню понятно, что он будет. В других местах тоже самое. Все до одной собачки стоят на своих местах и приносят пользу. Так что:
Цитата
Если вы не любите собак, значит вы не умеете их готовить
© Корейская мудрость.


Тоже самое про trigger_error(). Почему это:
Цитата
В вашем случаи trigger_error выкидывает сразу ошибку,а я ее даже обработать не могу.
??? Никто не отменял set_error_handler(), в моей статье написано, как можно любой trigger_error() превратить в exception. Так что обрабатывай, сколько влезет. Кроме того, что тут обрабатывать по большому счету? Если нет шаблона, значит его нет. И взять негде. Достаточно сообщения об этом.

И преимущества тоже там описаны. Эксепшен - это исключительная ситуация. Он останавливает скрипт. И не дает возможности пользоваться таким мощным инструментом, как XDebug к примеру. А именно для дебаггинга тут и стоит trigger_error(), для выявления и трассировки ошибки. Что мне даст кустарная обработка? Или вы не пользуетесь? Зря, очень удобно и красиво. Видно что, где и откуда. Картинка прилагается.
Цитата
3.Используйте константы.Это плохой тон все вшивать.
Да, наверное тут вы правы. Была такая мысль, глядя на реализацию Xtemplate и того же smarty. Но мне показалось лишним. Исправлю, раз это режет глаз, спасибо.

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

А про eval() - еще раз.
Цитата
кто-нибудь встроит Вашу библиотеку в себе код,и через строку в шаблоне сможет делать все что угодно.
Какой в этом смысл, если шаблоны и так поддерживают нативный синтаксис (читай: в них работает PHP). И так можно делать все, что угодно. В том и идея, чтобы соединить преимущества натива и классических шаблонизаторов. Можно пользоваться обычными циклами, условиями и прочими фишками. А можно наследованием. Ведь наследование шаблонов, это чуть ли не главная фишка, декларируемая противниками натива. И я же сразу обозначил - сие устройство не предназначено для защиты скриптов от верстальщиков.

За попытку критики - спасибо. :)

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.