php_templates в виде класса

Profic

just Profic (PHP5 BetaTeam)
ONK:
Про скорость я понял. Но согласись, что на таких извращенных данных, на какие натравливается tmpl_set, другие движки подобного же класса просто загнутся (образно)... Посмотри test2.php. Вообще все эти тесты, кроме test0.php, который переделан из test.php, выдернуты из исходников php_templates и немного переписаны.

Winnie Pooh:
Я не настаиваю :) Надеюсь что скорость увеличить удастся...

По тому же адресу лежит новая версия. Это Final Candidat, т.к. проходятся все тесты, как su1d-а, так и Тони...

ЗЫ. Пофиксить ничего, о чем тут обсуждали, не успел... будет, видимо, в следующей версии...

ЗЫЫ. Достали пытаться скачать profTemplate.zip. Для таких продублировал...
 

Profic

just Profic (PHP5 BetaTeam)
2all:
Кто нибудь пробовал заменитель в "боевой" ситуации? Тесты-то он проходить может, но на реальных задачах спотыкаться...

[Лирика]
Мдя, со скоростью труба... убирание всех маленьких функций в скорости ни черта не дала... Пришел к выводу, что внутренние данные храняться неправильно :( Та структура какая есть сейчас - самая интуитивная. Но выливается в массивы неограниченной размерности и в цикличность всей структуры.
Есть идея структуры с ограничением в максимум 4-мерным массивом и без цикличности... Буду пробовать реализовать ее...
Еще, блин, это экстеншен, позволяет иметь в шаблоне контексты и теги с одинаковыми наименованиями, но в разных контекстах. Те же tplTemplatez и PEAR::IT(X) не позволяют иметь контексты (блоки) с одинаковыми названиями, про теги не уверен, но похоже, что тоже...
[/Лиририка]
 

ONK

Пассивист PHPСluba
У php_templates 1.7 крайне неудачная реализация интерфейса инициализирования блоков, данных, вобщем всего.
Именно из-за этого он всего на 20 - 25% быстрее моего простенького обработчика шаблонов, написанного на ПХП. Лично я думаю что твоя реализация совсем не плохая, просто сделать _значительно_ быстрее с таким интерфейсом просто невозможно.

Жду 1.8 с объектным интерфейсом...
 

ONK

Пассивист PHPСluba
Кстати твой клас очень хорошо экономит память... Не зря ты ссылки везде использовал.
При генерировании 1000 блоков твой класс раздувал Апач всего на 2мб, а экстеншен на 10 -15. Так что способ хранения данных у тебя правильный.
 

Profic

just Profic (PHP5 BetaTeam)
При генерировании 1000 блоков твой класс раздувал Апач всего на 2мб, а экстеншен на 10 -15
Мдя, а скорость при этом? Сдается мне, что не сильно... Тут в общем, либо скорость большая и памяти кушаем много, либо скорость маленькая и памяти кушаем мало...
Так что способ хранения данных у тебя правильный
Для заменителя может и правильный, но мне-же самому нужен движок, где скорость уже критична... По большому счету данные представлялись в виде дерева, на подобии того, как это делает dom. В общем все-рвно буду пробовать изменить сруктуру данных :) Не отговоришь :) Там предполагается вообще отсутствие ссылок :) Если руки дойдут до C (уже года 2 не программировал на нем ничего), то напишу экстеншн :)
 

Profic

just Profic (PHP5 BetaTeam)
Да, ONK, ты все время говоришь про "свой простенький обработчик шаблонов". А посмотреть на него можно? Или он закрытый?
 

ONK

Пассивист PHPСluba
Мдя, а скорость при этом? Сдается мне, что не сильно... Тут в общем, либо скорость большая и памяти кушаем много, либо скорость маленькая и памяти кушаем мало...
Нет, это никак не связано.
(если интересна скорость то 47милисекунд против > 6секунд не пользу твоего класса -(... )

Не отговоришь Там предполагается вообще отсутствие ссылок
Отговорю, -), если хочеш сделать что-то быстрое даже не думай заимствовать интерфейс из php_templates 1.7, это не эффективно.

Если руки дойдут до C (уже года 2 не программировал на нем ничего), то напишу экстеншн.
Если 1.8 затянется ещё месяца на 4 - 6, я наверное найду свободное время и и замусь оформлением своего обработчика в виде экстеншена.... В пинципе я копался в исходниках, объекты в ПХП создаются и хранятся почти также как массивы, даже примерчик присмотрел на будущее. Кстати рекомендую, есть в ПХП предопределённый класс Directory, у него даже три метода есть,,, надо будет изучить его исходники (когда будет время)...

Исходники своего обработчика дать немогу, (не имею права), но он тебе особенно интересен не будет, он оптимизирован под высокую скорость и не обладает большой гибкостью, хотя свою задачу решает успешно.
 

Profic

just Profic (PHP5 BetaTeam)
Отговорю, -), если хочеш сделать что-то быстрое даже не думай заимствовать интерфейс из php_templates 1.7, это не эффективно
Интерфейс это функции для работы с шаблоном? Если да, то как тогда? - по мне это самый интуитивный вариант... Все, что выдел в других классах (IT и tplTemplatez) не блещет своей интуитивностью... Или ты имел ввиду функции по сравнению с методами объекта?

PHP, расслабляет... ведь написал года два назад на С парсилку логов сквида с апачем... а сейчас даже не помню, чего с чем там едят :)
 

Profic

just Profic (PHP5 BetaTeam)
ONK:
Сказал, "А", говори и "Б" :) Как там насчет эффективного и интуитивного интерфейса?
 

ONK

Пассивист PHPСluba
Эффективный интерфейс это один объект у которого есть куча методов, а не функции принимающие в качестве аргумента специальные объекты...
Возьми к примеру PEAR IT, очень неплохая штука...
 

Profic

just Profic (PHP5 BetaTeam)
ONK:
Из твоих слов следует, что если запустить тот же тест (test1) но переписанный под использование класса (в основе, то лежит класс), то он отработает намного быстрее?.. Не верится как-то... Я конечно попробую, но уже завтра...
 

ONK

Пассивист PHPСluba
Нет, простое переписывание существенно не поможет, да оно того и не стоит, написал рабочий заменитель и хорошо.

Отдельный обработчик шаблонов писать не имеет смысла, их много и на любой вкус, нужны навороты возьми SMARTY...
 

Profic

just Profic (PHP5 BetaTeam)
.
Отдельный обработчик шаблонов писать не имеет смысла, их много и на любой вкус, нужны навороты возьми SMARTY...
Обработчик уже, собственно, написан. Вот 3 причины, почему писалось своё:
1) Smarty очень сложный (не для меня, а для клиента) да и громоздкий - мне он чем-то напоминает забивание гвоздя микроскопом...
2) У всех виденных мною обработчиков шаблонов (tplTemplatez, PEAR::IT(X), какие-то ещё - названий уже не помню) срывает крышу от конструкций вида (синтаксис php_templates):
<tmpl:block>
<tmpl:block>
</tmpl:block>
</tmpl:block>
т.е. от вложений блоков с одинаковым именем один в один.
3) Аналогично (2) и с передачей параметров в скрипт (например, количество записей для отображения на странице)

На вопрос: "А нифига такое?" - уже есть ответ: "Доцент (читай заказчик :)) тупой. Чем в меньшем количестве файлов ему нужно (да и необходимо) что-либо править и чем меньше имен (контекстов) запоминать, тем лучше..."
У меня заказчики какие-то "тупые" пошли: "нужно то-то и то-то и чтобы работало сразу или с минимальными правками в минимальном кол-ве файлов"...

Я идею изменения структуры данных оставил на потом -заказчик проявил активность :). Использую, что написал...
 

confguru

ExAdmin
Команда форума
Profic

Вот такое вылезает на каждый
тег - сам шаблон показывается - но не парсится

Warning: [profTemplate/1.0RC1 line:461] Undefined tag/context "./menu_id" in lib\profTemplate-prefork.class.php on line 268
 

Profic

just Profic (PHP5 BetaTeam)
admin
новая версия лежит по старому адресу

PS. Там есть одна беда, я нечаянно убил поддержку Дримваверских шаблонов :(

PPS. Еще одно: в коде в данный момент времени имеется 2 реализации кода, старая и новая вичищать буду попозжее
 

Sizz

Новичок
все равно не работает, на каждый тег выдается:

Warning: [profTemplate/1.2.0-RC1] Undefined tag/context "/relatedlinks/headerlink/LINK" in /www/hosts/blus/includes/profTemplate-new-data-struct.class.php on line 400

этим классом кто-нибудь занимается, пользуется?
 

confguru

ExAdmin
Команда форума
Спроси у Profic ...
Имхо что он написал не очень производительное..
 

algo

To the stars!
Если кого-то вдруг заинтересует.. Есть еще один "php_templates в виде класса", несколько похожий на творение Profiс/su1d'а, только с серьезно расширенной функциональностью, ну и скорость неплохая судя по тестам.

Было заюзано знакомыми и потестено в боевых условиях... Потом у меня появилось большое количество работы и я отказался от поддержки.

Если кого-то интересует - отдам в хорошие руки
http://algolist.manual.ru/madtemplate/
 

Profic

just Profic (PHP5 BetaTeam)
Sizz
раскомментируй строку 401 (там где идет print_r) и погляди, что не так. Если не поймешь сам - то кидай вывод сюда)

А насчет новой версии: есть идеи, но реализовано все будет на php5. И то если будет. Я сам возможно пересяду на Smarty :)

-~{}~ 30.06.04 14:05:

algo
у тебя в шаблонизаторе, насколько я понял основная проблема "несколько похожий". У моего же имется нативный интерфейс вместо php_templates.
 

algo

To the stars!
algo
у тебя в шаблонизаторе, насколько я понял основная проблема "несколько похожий". У моего же имется нативный интерфейс вместо php_templates.
- Итак, Вас по-прежнему мучают эротичесике сновидения ?
- Хм, доктор, ну почему же мучают..
 
Сверху