еее, до меня дошло!! Думаю начать пейсать шаблонизатор. Вот-вот. Совсем скоро начну. phparser неплохой, но рефакторить его тяжеловато. а как время быстро летит
я имел в виду это PHP: <? $tpl->assign('label', 'value'); $tpl->assign('label', $array); $tpl->assignArray($associativeArray); $tpl->assignArrayPrefixed($associativeArray, 'prefix_'); какие методы должны присутствовать?
Koc У тебя есть 3 варианта 1. Передавать только скаляры. 2. Запретить передавать что-либо кроме массивов (они самая универсальная конструкция для данных в PHP) 3. В методе проверять is_array(), is_object(). И в зависимости от этого работать. Весь метод у тебя будет не больше 20ти строчек
Simpliest да, это можно сделать но тогда всегда $data должна быть на первом месте. А я привык, что на 1 месте label а на 2 данные
Меня давече пригнули таким тру шаблонизатором: PHP: <?php class Tpl { public static $vars = array(); public static function fetch($tpl_file) { if(is_array(Tpl::$vars)) extract(Tpl::$vars); ob_start(); include $tpl_file; return ob_get_clean(); } }
У меня простейший вопрос - нах различать что запихивается? У меня API такой: Код (Text): set() get() is_set() Что вы передаёте в шаблонизатор вы сами знаете. Если таких данных нету в объекте, то просто возвращаю '' при get. is_set использую что бы делать условия вида Код (Text): if (is_set('var')): // Do stuff here else: // No data yet endif; Хватает выше крыши. Декорирование данных делаю в модулях. К тому же у меня есть необзодимость подсасывания данных другими модулями, так что декораторы нужно делать на уровне модулей, что бы модуль не занимался декорированием чужих данных (это вам в отместку за smarty-like декораторы! Ненавижу этот капец в шаблонах!)
kostyl А я вообще видел систему, которая была сделана на подобие Delphi программ. Удобно шо ппц, там для каждого объекта задавался конфиг с типами и декорированием. При забирании данных они автоматом форматировались. Вот хочу так же блин
Psih только вот в Dephi это всё сразу компилируется... а тут каждый раз всё обрабатывать... Что за жизнь пошла то... (( )) Так делай )) всё ж для это есть: __get
пока сделал так // $data может быть как примитивным типом, так и массивом assign($label, $data) // $data - обязательно массив. compact($data, $prefix = NULL) хе-хе, я мучаюсь из-за имен переменных, а мне еще компилятор шаблонов писать нужно
А как распарсить такое HTML: <div> a <div> b </div> c </div> <div> d </div> что бы получать такие составляющие: HTML: a <div> b </div> c HTML: b HTML: c
для вложенных циклов HTML: {%for el in set%} {%if el.peoples%} <ul> {%for person in el.peoples%} <li>[:person.name:]</li> {%endfor%} </ul> {%else%} <span>empty</span> {%endif%} {%endfor%}