Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Шаблонизатор shellNet v 1.7
Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011
Помог: 0 раз(а)
Всем доброе время суток, наконец-то я написал свой шаблонизатор, и решил поделиться с вами. Он ничем не хуже Smarty.
У него тоже есть свой мини-язык (как у всех шаблонизаторов).
Шаблонизатор тоже знает что такое:
-циклы
-условия
-переменные
-массивы
-подключение других шаблонов.
Ну единственный недостаток он не умеет кэшировать шаблоны, но в следующей версии я это исправлю. Или можете подправить сами.
Ну немного слов про мини-язык шаблонизатора.
Когда я создавал, шаблонизатор я не стал изобретать заново велосипед, делая непонятный мини-язык.
{if 'переменная'} код {else} код {endif} это конструкция условия. ещё можно без else
{if 'переменная'} код {endif}
Ну как есть условие с отрицанием:
{ifn 'переменная'} код {else} код {endif}
Ещё есть переменные они имеют вид: {перменная}
Ну в этой версии есть ещё и массивы: они имеют такой вид {массив#индекс}
Есть ещё цикл пока тока 1 в стиле: {foreach='массив' to='его индексы'} {endforeach}
А также я не забыл про инклюд (подключение других файлов шаблона в свой).
{include='файл.tpl'}
Ну вообщем строго не судите, писал шаблонизатор я на PHP естественно, а отладку производил на денвере.
----- int i = 6; ++i + i++ = ?
DlTA
Отправлено: 05 Декабря, 2011 - 13:38:55
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!
Самогонщик
Отправлено: 05 Декабря, 2011 - 13:43:18
Посетитель
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
DlTA пишет:
как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!
Чтобы упростить себе жизнь в плане поддержки
str_ireplace - подход не плох, ровно до тех порка пока не нужно выполнить тонны таких замен, например вывод комментариев хабра.
Microteam
Отправлено: 05 Декабря, 2011 - 13:46:27
Гость
Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011
Помог: 0 раз(а)
DlTA пишет:
как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!
Я знаю что php сам явлется неплохим шаблонизатором, но он не очень-то хороший. Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php, но тем не менее пропустил где нибудь точку с запятой, то всё весь сайт не пашет. Вот для этого пишут свой шаблонизатор (Добавление)
Самогонщик пишет:
str_ireplace - подход не плох, ровно до тех порка пока не нужно выполнить тонны таких замен, например вывод комментариев хабра.
Предлагаете использовать просто str_replace?
тогда названия переменных будут регистрозависимыми
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Microteam пишет:
Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php
на это тоже был ответ "накой такие верстальщики"
Самогонщик
Отправлено: 05 Декабря, 2011 - 13:55:05
Посетитель
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
вообще не использовать replace
Microteam
Отправлено: 05 Декабря, 2011 - 13:56:30
Гость
Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011
Помог: 0 раз(а)
Самогонщик пишет:
вообще не использовать replace
????
А как не использовать?
Я вот думаю, если кэшировать каждую страницу... так нагрузка существенно уменьшится...
----- int i = 6; ++i + i++ = ?
Самогонщик
Отправлено: 05 Декабря, 2011 - 14:02:12
Посетитель
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
Компилирование шаблонов. Свои наработки резкому рендеру (быстрее чистого пхп, ага) могу показать вечером.
Microteam
Отправлено: 05 Декабря, 2011 - 14:03:54
Гость
Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011
Помог: 0 раз(а)
Самогонщик пишет:
Компилирование шаблонов. Свои наработки резкому рендеру (быстрее чистого пхп, ага) могу показать вечером.
Ааа я вас немного понимаю, т.е это типа хэша?))) Покажите пожааалуйста)))) Как это делать)))
----- int i = 6; ++i + i++ = ?
Мелкий
Отправлено: 05 Декабря, 2011 - 14:08:20
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Самогонщик пишет:
Чтобы усложнить себе жизнь в плане поддержки
fixed
Но не холиварим, нет
Microteam пишет:
Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php
На моей практике верстальщики не натягивают шаблоны, этим занимаются программист, которому от верстальщика приходит вёрстка страницы.
И в случае мета-языка вероятность поломать весь вид шаблона - та же.
Но не холиварим, так что умолкаю
----- PostgreSQL DBA
Самогонщик
Отправлено: 05 Декабря, 2011 - 14:12:00
Посетитель
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
Мну нужно внимательнее исходник перечитать. Если у вас есть циклы, значит есть и компиляция. Тут я загнался.
Имея на руках подобный шаблонизатор мне пришлось решить следующие проблемы:
1. объявление функции в шаблоне.
2. быстрый вызов другого шаблона.
3. скорее всего что-то ещё.
Т.е.
1. Если объявить в шаблоне функцию, то его нельзя будет подключить повторно.
2. Если много раз подключить шаблон, то на каждое подключение потеряем по микросекунде. Тысяча комментов - 1 секунда.
Microteam
Отправлено: 05 Декабря, 2011 - 14:19:08
Гость
Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011
Помог: 0 раз(а)
Самогонщик пишет:
Мну нужно внимательнее исходник перечитать. Если у вас есть циклы, значит есть и компиляция. Тут я загнался.
Имея на руках подобный шаблонизатор мне пришлось решить следующие проблемы:
1. объявление функции в шаблоне.
2. быстрый вызов другого шаблона.
3. скорее всего что-то ещё.
Т.е.
1. Если объявить в шаблоне функцию, то его нельзя будет подключить повторно.
2. Если много раз подключить шаблон, то на каждое подключение потеряем по микросекунде. Тысяча комментов - 1 секунда.
Это вы точно сказали, не отрицаю. Но надо это исправлять, а что ж мне делать с этим всем, и не использовать replace. Это уже магия.)
Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011
Помог: 8 раз(а)
Если я правильно понял код, то там много плохого форматирования, громких заявлений, стилистических ошибок и мало комментариев. А ещё он работает как интерпретатор шаблона.
Я допиливал шаблонизатор попкорн, хотел связаться с автором, но так и не ответил.
Суть: мне нужны были функции в шаблонах (рекурсивный вывод) и микрошаблоны (плоть до оформления одной ссылки).
Т.к. шаблон компилируемый, то нужно было перед его смелым использованием проверить, существует ли откомпилированная версия. Сначала я хотел не делать таких проверок, а компилить все шаблоны разом при их обновлении, но передумал, исключительно из-за того, что можно накосячить.
Для решения проблемы добавления функций в шаблон нужно было верь код, который не относится к этим функциям, обернуть в ещё одну функции. Оборачивание производилось автоматически, и такой функции выдавалось зубодробительное имя. Но другие функции шаблона засоряли глобальное пространство имён.
Тогда я обернул все функции ещё и в класс с зубодробительным именем, что за одно решило и вторую проблему: перед тем как вызывать функцию из другого шаблона производилась проверка на загруженность в память класса соответствующего этому шаблону. Если класса не было, то производилась проверка существования откомпилированного шаблона и его загрузка загрузка, а если откомпилированного шаблона, то он компилился.
Так каждый шаблон компилится ровно 1 раз при первом обращении после очистки кеша. И при генерации страницы проверка существования необходимых откомпилированных шаблонов производится не более 1 раза для каждого шаблона.
Как то так, если чего не понятно, спрашивайте.
Microteam
Отправлено: 05 Декабря, 2011 - 16:37:37
Гость
Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011
Помог: 0 раз(а)
Ну у меня тоже такая идея была, кэшировать шаблоны. Но надо уметь кэшировать, ото я встречал умельцев весь сайт кэшировать, после чего у них ничего не меняется. Попробуем)
----- int i = 6; ++i + i++ = ?
PATCH
Отправлено: 27 Декабря, 2011 - 04:32:39
Частый посетитель
Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011
Помог: 22 раз(а)
Microteam пишет:
Ну у меня тоже такая идея была, кэшировать шаблоны. Но надо уметь кэшировать, ото я встречал умельцев весь сайт кэшировать, после чего у них ничего не меняется. Попробуем)
кстати вопрос для знатоков) а что если использовать кеширование всего сайта + технологию AJAX )
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.