Выкладывал где-то похожий, но он был совсем плох Вообщем может кому пригодится, код прошёл 2 часовую обкатку, багов не обнаружено Код оптимизирован не очень хорошо, но кеширование спасает, так что это особого значения не имеет Далее код + примеры от вас вопросы, критика(хотя зачем?), предложения http://codepaste.ru/2233/
Я считаю так: -Шаблонизатор должен облегчать процесс верстки, избавляя нас от набора ненужных символов -Шаблонизатор должен быть понятен верстальщику PHP: // В test.tpl its some var 1 - {$some_var}<br> its some var 2 - {$some_var2}<br> {$nice_some_var=$some_var." but its nice var =)"} and its nice some var - {$nice_some_var}<br> {postcache} array: (no cache zone, rand num for test {rand(1,1000)})<br> {$array["some_key"]="some value"} {foreach($array as $key=>$val)} {$key} => {$val} ,<br> {/foreach} {/postcache} *DONT_KNOW*
Kreker в моём случае избавляет нас от <?=?>, увеличивает читабельность, сохраняя мощь и функциональность пыха а верстильщику сложнее будет привыкнуть "к языку шаблонизатора" чем к пыху And i must say, that im don't speak english Вот только что со школы помню
и вообще, куда приятнее писать {foreach()}{/foreach} {if()}{else}{/if} Чем <?foreach(){?><?}?> <?if(){?><?}else{?><?}?>
HTML: [:if username:] Прювет, [:username:]! [:else:] залогинься [:/if:] <table class="dataTable"> <tr> <td>id</td> <td>name</td> <td>registration date</td> </tr> [:loop users:] <tr> <td>[:id:]</td> <td>[:name:]</td> <td>[:registration_date:]</td> </tr> [:/loop:] </table>
Вот объясните мне чем php сложнее чем smarty? никак не могу понять. единственный плюс, который увидел - ограничение свободы. получив доступ к нативному шаблону можно натворить всё что угодно.
Чтобы редактировать шаблоны, обычно нужны админские права - а имея админские права и так можно натвроить что угодно =) Если заменить еще фигурные скобки на что-то более красивое, то будет вообще класс =)
shurastik это и есть натив, толко "улучшенный", поддерживается всё кроме switch [vs] config: tpl_tag_open => tpl_tag_close =>
Koc Кстати есть стандартный короткий синтаксис... .... ИХМО данный шаблонизатор уж слишком сложный, меня больше привлекает тот, что ты выложил в топике Коса, намного приятнее воспринимается, это я сейчас говорю о применении, а не о функциональности. А вообще ИХМО, пусть дизайнеры учат php, потому что тогда они не дизайнеры...
и питон, руби, яву, асп ... вот я и стремлюсь сохранить эту простоту в том, шаблонизаторе, который буду писать, но это видать будет нелегко. А какой еще функционал нужен? Подстановки массивов, массивов с префиксом, че еще?
Koc У нас в бумтайме работал дизайнер-верстальщик. Он естественно делал дизайны и верстал их. Знал он только голый HTML и CSS, даже JS не знал, не говоря уже о PHP. Ему хватило нескольких минут объяснений что есть что в шаблоне: условия, циклы, вывод на экран переменной из шаблонизатора. На следующий день он прекрасно лопатил всё сам и за неделю сам переверстал полностью все 150 с лишним шаблонов, подучил JS и немного PHP. Всё, у человека нет проблем никаких с пониманием написанного. Естественно вся сложная логика была внутри, а в шаблоне простейшие условия показать/не показать кнопку и циклы вывода данных. Так что всё это фигня что дизайнерам легче. Что касается конкретно PHP, он сам себе шаблонизатор. Он именно как шаблонизатор и был создан. Не пихайте лишнего в шаблон и будет вас великое счастье. За другие языки не говорю, потому что не работал и не знаю как там происходит вставка данных, но я не знаю другого языка, который бы позволил сделать вставку кода прямо в HTML как это позволяет PHP.
Ну я об этом и говорю. Вот есть заказчики, которые говорят "Делаем проект с использование смарти", чтобы он потом отдельно дизайнеров подключил и они ему оформили, как надо... Таким образом целесообразный программист делает найти с интерфейсом для смарти и гнет за это цену объясняя заказчику, что дешевле нанять дизайнера с навыками написать обычный цикл на php, чем городить эту всю фигню, потому что смарти загнётся в скором времени, и это реальная ситуация... Заказчик сказал "Давайте попробуем и так и так" и смарти загнулось...
У меня подозрение, что все программисты, участвующие в дискуссии с аргументацией "верстальщику проще понять шаблонизатор" или "ограничение прав для верстальщика" никогда не работали с другими верстальщиками, кроме себя?
флоппик хе-хе, я работаю. Он нормально воспринимает теги типа <TPL_INCLUDE:'path/to/template'>, <TPL_SUB:SOME_BLOCK>. Но не знает что такое чмод).
флоппик Почему-же, работали. Все понимали простейшую логику В том же smarty тот-же foreach, и прочие конструкции, только куда более громоздкие. Так что ИМХО, натив PHP рулит
Psih всё правельно говоришь, простейшую логику пхп понять можно за пару часов, а плюсом работы с нативом,в отличии от "языка шаблонизатора", является приобщение верстильщика к самому пхп, да и к тому же многие опытные верстильщики прекрасно знают основы пыха Смысл шаблонизатора который выложил, избавить меня от <??> и от <?{?><?}?> ну а так же, развитое кеширование