| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > реализация класса шаблонизатора |
| Автор: pirrat 3.11.2007, 18:08 | ||||||||
| вообщем пишу свой класс,основной задачей которого будет парсинг переменных в шаблон,т.е. одним словом класс-шаблонизатор, класс уже почти написан,но встала одна проблема- нужно написать метод класса который будет выполнять следующие задачи и идеи: а идея такова: очень часто,практически в любом коде ,встречается такой код:
думаю строки вам знакомы.. хотелось этот код оптимизировать ,и я практически справился с этой задачей,вот код: создаем обьект класса и вызываем метод класса parselist в аргументах которого пишем запрос и название шаблона для вывода:
данный код выполняет следующее: обрабатывает запрос , и выводит шаблон test.tpl ,в котором прописаны переменные ,имена которых являются названиями полей таблицы.. все работает как надо,но проблема в том что не получается обработать эти самые переменные,их можно обработать в самом метогде,но из вне не получается,вот так это должно выглядить:
вот сам класс,привожу не полностью,а только те методы которые здесь участвуют..
как я уже писал,этот код работает так как надо,за исключением того что нельзя обработать данные из бд,так как они парсятся сразу в шаблон, и что то не как не могу придумать как эти данные обработать из вне класса, т.е. нужно обработать член класса $varsql!!! очень буду благодарен,если подскажете ,как это реализовать... ЗЫ: я плохо знком с ООП,мб поэтому и не могу реализовать задачу... |
| Автор: HotHead 4.11.2007, 12:02 |
| Не очень понял, что значит 3-ий кусок кода. Или там 3 и 4 строчки перепутаны местами? А так сделайте $varsql массивом и push-те в него результаты запросов. На выходе получите массив. Правда не знаю что вы с ним будете делать. Я бы рекомендовал ввести в parselist ещё как минимум название поля (по умолчанию = '') и если оно есть, то забивать данные в массив $varsql с ключами равными значению этого поля. Так хотя бы некоторая логика появится. Или объясните куда должна обращатся строка $mtest->varsql['date']=format_time($mtest->varsql['date']); если в результате запроса вернётся несколько строчек. |
| Автор: pirrat 4.11.2007, 13:06 | ||||
| $valsql и так я вляется массивом,с ключами равными названиям полей таблицы,и значениями равными значениями этих полей,т.е. если сделать в цикле print_r($this->varsql); то получим следующие:
и таких несколько массивов в зависимости от того сколько раз прошел цикл... можно его сделать многомерным массивом-ниже описал как.. да возможно в третьем куске кода я не верно написал,но смысл надеюсь понятен,что я хотел обработать значения из поля date функцией... по логике нужно делать так : делить эту функцию(parselist) на 2 или 3 функции,в первой мы получаем на выходе многомерный массив с индексными ключами и значениями другой массив в котором уже и будут ключи-имена полей,значения-значения этих полей... т.е. вот так:
,в второй функции циклом заменяем в массиве значения на нужные мне,и в 3 функции уже новый массив опять же циклом выводим в шаблоны.. но при таком раскладе,мне кажется игра не стоит свеч и проще будет применить стандартный процедурный подход... |
| Автор: HotHead 4.11.2007, 14:21 | ||
Кто вам мешает сделать массив массивов с ассоциативными ключами? Собственно fetchassoc и должен делать массив с ассоциативными ключами. Потом делаете array_push в varsql. А методе в дальнейшем используете $ff.
|