![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Добрый день, сделал себе велосипед для рендинга шаблонов.
Проблема встала иза рекурсивного вывода дерева с итерацией в 100-5000 проходов Прошлый вариант без рендинга скажим пилотный был без реализации шаблона все было в параметрах класса и выводился через вызов приватной функции в рекурсии. Это накладывало ряд трудностей и не удобств таких как простота и быстрота изменения шаблона. 2 вопроса: Как справляются громоздкие фреймворки уяя, кохан, зендя итд с такой задачей как повторное использование шаблона с новыми параметрами в рекурсии ? Неужто ли в преставлении делают вывод рекурсии с собственной функцией? -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Что такое вывод рекурсии? ZF имеет view helpers: partial partialLoop для вывода шаблона или шаблона в цикле -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Не пойму что есть рекурсия, но может это поможет
Это сообщение отредактировал(а) Sentox - 25.7.2012, 16:31 |
|||
|
||||
| Sanchezzz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
рекурсия - это алгоритм который в последствие выполнения вызывает себя повторно.
Fortop, partial partialLoop я незнаком с фреймворком от зенда и даже не представляю как они работают. в общим рейдеринг выполняется у меня через класс и пару функциий
// маке() создает экземпляр класса фабрика и подключает файл представления (шаблон)
В данной реализации меня не устраивает то что для каждой итерации в цикле в модели построения дерева подключается файл шаблона. Сейчас дерево строится с функцией внутри шаблона что некрасиво и не правильно. Это сообщение отредактировал(а) Sanchezzz - 25.7.2012, 22:19 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
||||
|
|||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Есть задумка которую я еще не проверял открыть файл на чтение некий шаблон HTML который нужно вывести прочитать его и вернуть в переменю.
До вывода переменной с содержание разметки хтмл и {$var1} объявить переменные и вывести. Фактически мы получим тоже самое что.
Если все проканает то функцию из шаблона можно перенести в модуль, добавить проверок если я гружу опять такой тип шаблона то вернуть из временного кеша шаблон и использовать. Это сообщение отредактировал(а) Sanchezzz - 25.7.2012, 22:25 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Погуглить нет? "Example #9 Using PartialLoop to Render Iterable Models" В общем существует шаблон выводящий какой-либо элемент. Существует некий хелпер (класс) который на вход принимает итератор и имя шаблона. И последовательно выводит данные на каждом шаге итератора в шаблоне. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Sentox |
|
||||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
A не в этом смысле сказал, так риторический вопрос был Поидее в этом случае лучше использовать eval, если всё таки будут использоваться примитивные алгоритмы в коде html. Ксати интересен был бы эксперимент всё же если неморочиться и поставить одну из уже существующих функций: include_once или require_once. Судя по всему должны работать быстрее, так как логика проверки подключенного файла с уже сформированным байт кодом будет производится непосредственно на платформе самого интерпритатора. Тот же кэш но на уровне интерпритатора и в байт коде. Может быть и не быстрее ... интересно Это сообщение отредактировал(а) Sentox - 25.7.2012, 23:51 |
||||||
|
|||||||
| Sanchezzz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Я так понял принцип действия зашит в некой вспомогательном классе с тучей функций которые смотрят по шаблону если строка с <p>getTree</p> то тут выполнить функцию из определеного зарания в параметрах класса и подставить результат, это не годится такой подход мудреный мне не нужен. Не вижу плюсов как в скорости разработки так и выполнения. С таким же успехом я могу оставить рабочий вариант и не переносить функцию обратно в класс и оставить ее в шаблоне. Да люблю экономю на спичках)
Это сообщение отредактировал(а) Sanchezzz - 26.7.2012, 08:03 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
||||
|
|||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
|
|||
|
||||
| MoLeX |
|
||||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
немного не по теме, но лучше переделать вызов
и соответственно
-------------------- Amazing |
||||
|
|||||
| Sanchezzz |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
MoLeX, а зачем переделывать метод подключения ?
если ты по поводу то что "/teml/tree.php" явно указывать файл то это временный вариант планируется просто / папка / папка / файл без разрешения или с разведением. сам посуди что написать быстрей ['teml', 'tree'] или нежели просто путь с косой чертой а намек что DIRECTORY_SEPARATOR в разных системах разный я уже давно перестал на это обращать внимание. винда понимает оба варианта пути к файлу и в стили линукс и в собственном Sentox, я один фиг не догоняю ((( // инициализация в классе в некой функции которая выводит мне нужный шаблон
вот есть функция зашита в шаблон и там выполняется, все работает и не дает сбоев просто хочется отделить эту функцию от html. функцию перетащить в класс а то что разделено в шаблон. смотреть с полным открытием 3х блоков это вся одна функция разделил на 3 куска чтобы было более понятно.
Вот эту часть подключить из файла один раз прогонять в цикле меняя переменный ток)
Это сообщение отредактировал(а) Sanchezzz - 26.7.2012, 14:10 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
||||||||
|
|||||||||
| ksnk |
|
||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
imho, фреймворки достаточно мудры, чтобы доверить эту операцию шаблонизаторам. В twig, например, пишешь макрокоманду, или блок и используешь ее повторно хоть в цикле, хоть в рекурсии. Дальше транслятор языка шаблонов порождает php, в котором каждый код является функцией некоего класса и все конструкции шаблона - конструкциями php.
Можно пользоваться функцией create_function.
Будет что-то типа compile в регулярках Javascript. Иногда - полезно... Можно пойти дальше и смастерить готовый "откомпилированный" php в виде класса, где каждый шаблон - отдельный метод. Нет пределов извращениям совершенству Это сообщение отредактировал(а) ksnk - 26.7.2012, 15:51 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||||
|
|||||||
![]()
|
| Правила форума "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. |