2NetFly
-
Smarty – проникся, оценил, в восторге %)
В таком состоянии прибывал разве что после чтения Кнута или Фридла. Почему-то только сегодня узнал о Smarty, точнее, только сегодня заставил себя прочесть документацию и пожалел, что не сделал этого раньше. Ниже – попытка самооправдания и самоуспокоения %)
Многие вещи красиво реализованы в сией системе. Уже уйму времени брожу вокруг да около, многие из идей были решены подобным образом, но не все.
Модификаторы и последовательный вызов модификаторов у меня реализованы таким же образом. Навеяно было "Escaping substitutions" Масона (для Perl), и развито практически до того, что сейчас присутствует в Smarty. Вот только сами модификаторы представляли собой методы отдельного класса, и поэтому их неудобно было дополнять. Была идея сделать регистратор, но поленился и не реализовал.
Встроенных функций у меня было всего три: include, execute и тренарный if (? : ). Execute позволял вызывать методы любого класса с произвольными параметрами, существовал класс General, содержащий наиболее часто используемые методы. Не так удобно, как в Smarty, но работало и позволяло без особого труда расширять функциональность %) А вот с моим ифом мне приходилось туговато. Сложные, а тем более вложенные, условия не поддерживались, поэтому часто приходилось писать отдельные методы под конкретный случай. Зная о LXP, я понимал, в каком направлении нужно двигаться, но, мать ее за ногу, лень мне не давала.
Способ предоставления доступа к переменным, как это сделано в Smarty, был отброшен с самого начала. Тогда мне казалось, что верстальщикам будет сложно работать с массивами, хешами и различными структурами. Поэтому поддерживались только обычные переменные и псевдохеши (args_param1, cookies_cname и т.д.). Сейчас вновь обдумывая проблему понял, _насколько_ сильно я заблуждался.
Из остального были пре/пост фильтры (реализованные, правда, в другом классе), некоторое подобие конфигурационных файлов. Существовали, конечно, некоторые идеи, которые отсутствуют в Smarty, но они заточены под генерацию блоков и работу в связке с БД.
В общем, выплакался %) С одной стороны приятно, что многие "правильные" вещи родил самостоятельно, с другой – в который раз ругаю себя за то, что не обращаю внимания на разработки других программистов.
Переводить все проекты на php, конечно же, не планирую, но обязательно детально проанализирую и позаимствую лучшее у Smarty.
После изучения документации недостатком определил для себя неудобный синтаксис вызова функций. Приятнее и функциональнее было бы использовать обычный синтаксис языка (для perl уж точно). Section показалась несколько усложненной, но это все легко исправимые мелочи.
В таком состоянии прибывал разве что после чтения Кнута или Фридла. Почему-то только сегодня узнал о Smarty, точнее, только сегодня заставил себя прочесть документацию и пожалел, что не сделал этого раньше. Ниже – попытка самооправдания и самоуспокоения %)
Многие вещи красиво реализованы в сией системе. Уже уйму времени брожу вокруг да около, многие из идей были решены подобным образом, но не все.
Модификаторы и последовательный вызов модификаторов у меня реализованы таким же образом. Навеяно было "Escaping substitutions" Масона (для Perl), и развито практически до того, что сейчас присутствует в Smarty. Вот только сами модификаторы представляли собой методы отдельного класса, и поэтому их неудобно было дополнять. Была идея сделать регистратор, но поленился и не реализовал.
Встроенных функций у меня было всего три: include, execute и тренарный if (? : ). Execute позволял вызывать методы любого класса с произвольными параметрами, существовал класс General, содержащий наиболее часто используемые методы. Не так удобно, как в Smarty, но работало и позволяло без особого труда расширять функциональность %) А вот с моим ифом мне приходилось туговато. Сложные, а тем более вложенные, условия не поддерживались, поэтому часто приходилось писать отдельные методы под конкретный случай. Зная о LXP, я понимал, в каком направлении нужно двигаться, но, мать ее за ногу, лень мне не давала.
Способ предоставления доступа к переменным, как это сделано в Smarty, был отброшен с самого начала. Тогда мне казалось, что верстальщикам будет сложно работать с массивами, хешами и различными структурами. Поэтому поддерживались только обычные переменные и псевдохеши (args_param1, cookies_cname и т.д.). Сейчас вновь обдумывая проблему понял, _насколько_ сильно я заблуждался.
Из остального были пре/пост фильтры (реализованные, правда, в другом классе), некоторое подобие конфигурационных файлов. Существовали, конечно, некоторые идеи, которые отсутствуют в Smarty, но они заточены под генерацию блоков и работу в связке с БД.
В общем, выплакался %) С одной стороны приятно, что многие "правильные" вещи родил самостоятельно, с другой – в который раз ругаю себя за то, что не обращаю внимания на разработки других программистов.
Переводить все проекты на php, конечно же, не планирую, но обязательно детально проанализирую и позаимствую лучшее у Smarty.
После изучения документации недостатком определил для себя неудобный синтаксис вызова функций. Приятнее и функциональнее было бы использовать обычный синтаксис языка (для perl уж точно). Section показалась несколько усложненной, но это все легко исправимые мелочи.