![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
stalkerok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
Привет всем.! сразу оговорюсь целью не ставится условия в шаблоне (подсветка, размер шрифта и т.д.)
а простой вывод и соединение. Вопрос: Можно ли это использовать? и какие последствия могут быть.? И чтобы вы посоветовали? Присоединённый файл ( Кол-во скачиваний: 17 ) ![]() |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
stalkerok,
Перечитайте с первой до последней страницы: http://forum.vingrad.ru/topic-54581/unread-1/40.html -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
stalkerok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
SamDark причитал.
Вопрос такой: в моем варианте скрипт загружает шаблон выделяет блоки соединяет всю информацию и выводит. в вашем варианте шаблон запускает функции из скриптов, и чтобы сменить дизайн надо будет попотеть, если учесть что сайт динамичный. Конечно у моего варианта тоже не всё гладко но всёже. Как лучше делать? и намного ли удобней XML (если да скиньте пример для PHP5). |
|||
|
||||
FractalizeR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: 2 Всего: 4 |
Мне вообще не понятен ваш вопрос. Вы можете его нормально сформулировать? Что за "простой вывод и соединение"? Чем вас не устраивает http://smarty.php.net? -------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
stalkerok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
FractalizeR
1.Шаблонизатор должен быть прост т.е. замена переменных , раэделение шаблона на блоки 2.smarty грамосткий и т.д. 3.хочется своего. |
|||
|
||||
FractalizeR |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: 2 Всего: 4 |
Смарти достаточно простой. Там нет ничего сложного. Абсолютно.
Вам жалко пары десятков килобайт серверного места? Или вы пишете код под серверы с дикой нагрузкой? Оптимизировать код, чтобы он быстрее выполнялся, нужно только тогда, когда налицо проблема быстродействия и вы поймали узкое место профайлером.
Это другое дело, но тогда причем тут ваш вопрос? Вы задали его так абстрактно, что дальше некуда. Будет у вас что-то написано и будут вопросы - задавайте, но только конкретно. -------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
||||||
|
|||||||
stalkerok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
FractalizeR
см. в начале темы в прикрепленном файле. |
|||
|
||||
FractalizeR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: 2 Всего: 4 |
Написание кода без комментариев, пусть даже короткого и, казалось бы, понятного кода - плохая привычка. Думаю, вам стоит начать комментировать код хотя бы в стиле phpDocumentor.
Сам код не показался мне удачным. 1. Метод присваивания переменной шаблона значения почему-то назван set_tpl, а метод загрузки самого шаблона из файла - get_tpl. имена методов выбраны неудачно, поскольку обычно set/get - это имена методов доступа к значениям скрытого поля класса (свойство). Лучше переименовать set_tpl в set_var или, как у смарти assign (или скажем, assignvar). 2. Название метода вывода отрендереного шаблона tpl_parse мне тоже кажется неудачным. Парсинг - это разбр чего-то, а не вывод уже готовой информации. render подшло бы больше, на мой взгляд. 3. tpl_parse выводит, не отрендереный шаблон целиком, как ожидалось, а только отрендереный результат последнего вызова get_block, чего никак нельзя ожидать исходя из смысла названия класса и самого метода. 4. Метод tpl_parse зависит от результата вызова get_block, чего никак нельзя ожидать исходя из интерфейсной части класса (объявления). Проектировать библиотеки следует таким образом, чтобы понять, как ее использовать, можно было лишь взглянув на public объявления, не копаясь в реализации. В вашем случае это невозможно. В вашем случае я бы предложил другую архитектуру (надеюсь, я угадал, что вам нужно). Следующий пример будет написан наполовину в псевдокоде, поэтому не стоит ожидать, что он заработает, будучи вставленным в скрипт ![]()
Обратите внимание, что все-таки архитектура достаточно проста и пригодна лишь для самых простых случаев. Скажем, поведение не определено, если в шаблоне окажется два блока с одним и тем же именем. О безопасности, я так понимаю, речь не идет, кроме самих себя нам защищаться не от кого, правильно? Потому что, если есть от кого, все становится намного более сложным. Мою реализацию, наверное, тоже не назовешь слишком удачной, но это то, что пришло в голову за пять минут, пока смотрел ваши исходники. Да, кстати, поиск блоков внутри текста шаблона вам лучше выполнять не с помощью регулярных выражений, а с помощью двух strpos и substr. Думаю, так будет быстрее. Вы ведь точно знаете текст тега, который вы ищете. Это сообщение отредактировал(а) FractalizeR - 3.1.2008, 16:15 -------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 7 Всего: 259 |
Согласен с тем, что прокомментировал FractalizeR кроме
Потом, при более сложной структуре (вложенности и пр) проблем не оберешься. Но если вложенность не планируется - то конечно можно. Правда зачем strpos substr... str_replce и всех делов ![]() |
|||
|
||||
FractalizeR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: 2 Всего: 4 |
В рамках текущей архитектуры невозможно иметь два блока внутри шаблона с одинаковым именем. Если изменится архитектура - тогда, конечно. Кроме того, в исходном коде stalkerok просто тупо берется первое совпадение регулярному выражению в качестве блока. Фактически полный аналог strpos и иже с ним. -------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
FractalizeR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: 2 Всего: 4 |
stalkerok,
вы бы хоть высказались, что ли.... А то вам тут наотвечали, а вы молчите... -------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |