Popcorn!
Решил для своей CMS-ки написать маленький и быстрый шаблонизатор Popcorn!
Собственно выкладываю в паблик. выслушаю критику, советы и предложения )
Встроенные шаблонные теги:
-------------------------------- -------------------------------- -
{echo $var} - Вывести значение переменной.
{var name $var2} - Создать локальную переменную. Видимость только в текущем в шаблоне. Если нужно передать во вложенный то заюзать {assign}
{const name $value} - Создать константу
{file 'filename'} - Загрузить файл
{run function()} - Запустить php функцию
{if expr} {else} {elseif expr} {/if} - Конструкция IF
{loop $mas as $item}{/loop} - Конструкция LOOP
{loop $mas as $key => $item}{/loop}
{codes} - Показать все зарегистрированные шаблонные теги/коды
{vars} - Показать все созданные шаблонные переменные
{dump $var} - Показать информацию о переменной
{assign var 'value'} or {assign var $value} - Создать глобальную переменную. Она будет видна в подключаемых шаблонах
{include 'template_name'} - Подключить шаблон
Примеры, документацию и последнюю версию можно посмотреть на офф. сайте:
http://popcorn[dot]template-cms[dot]org/
Так же Popcorn можно подключить к CodeIgniter: http://popcorn[dot]template-cms[dot]org/#3
1. Awilum - 06 Мая, 2011 - 22:20:38 - перейти к сообщению
2. DeepVarvar - 06 Мая, 2011 - 22:56:12 - перейти к сообщению
Добавьте ф-цию (аля compressHTML), назовем её например "lyingHTML" (?) которая будет убирать повторяющиеся пробелы,
табуляцию и переводы строки, заменяя их на еденичные пробелы.
Как-никак - еще одна щепка (палкой не назвать конечно) в колеса кулхацкеров.
Но плеваться и рычать оные будут точно
табуляцию и переводы строки, заменяя их на еденичные пробелы.
Как-никак - еще одна щепка (палкой не назвать конечно) в колеса кулхацкеров.
Но плеваться и рычать оные будут точно
![Закатив глазки Закатив глазки](./im/emoticons/rolleyes24.gif)
3. DeepVarvar - 07 Мая, 2011 - 10:49:54 - перейти к сообщению
Кстати, да...
Вчера когда начал читать класс попкорна, почему-то подумал что в конце будет использован eval().
Однако..
Зачем делать лишние обращения к диску?
Думаю проще сделать eval() полученой конечной строки, без (как у вас) чтения, затем записи, затем снова чтения файла-шаблона и только потом его исполнения.
Сбросить можно на диск уже готовый статичный шаблон перехватив вывод через ob_get_contents(), как-никак - считай кеш.
И проверять его на устаревание например filemtime(time()-600) или иное время устанавливаемое как параметр при инициализации класса.
Вчера когда начал читать класс попкорна, почему-то подумал что в конце будет использован eval().
Однако..
Зачем делать лишние обращения к диску?
Думаю проще сделать eval() полученой конечной строки, без (как у вас) чтения, затем записи, затем снова чтения файла-шаблона и только потом его исполнения.
Сбросить можно на диск уже готовый статичный шаблон перехватив вывод через ob_get_contents(), как-никак - считай кеш.
И проверять его на устаревание например filemtime(time()-600) или иное время устанавливаемое как параметр при инициализации класса.
4. Awilum - 07 Мая, 2011 - 12:18:41 - перейти к сообщению
Цитата:
Зачем делать лишние обращения к диску?
Думаю проще сделать eval() полученой конечной строки, без (как у вас) чтения, затем записи, затем снова чтения файла-шаблона и только потом его исполнения.
Сбросить можно на диск уже готовый статичный шаблон перехватив вывод через ob_get_contents(), как-никак - считай кеш.
И проверять его на устаревание например filemtime(time()-600) или иное время устанавливаемое как параметр при инициализации класса.
Думаю проще сделать eval() полученой конечной строки, без (как у вас) чтения, затем записи, затем снова чтения файла-шаблона и только потом его исполнения.
Сбросить можно на диск уже готовый статичный шаблон перехватив вывод через ob_get_contents(), как-никак - считай кеш.
И проверять его на устаревание например filemtime(time()-600) или иное время устанавливаемое как параметр при инициализации класса.
1) Проверяется существует ли скомпилированный шаблон или не устарел ли он.
2) Если устарел или его нет, то создается(компилируется) новый и подгружается иначе грузится скопированный.
Вот и все. Каждый раз ничего не парсится и не перекомпилируется.
Кеширования. да, его сейчас нету.
5. DeepVarvar - 07 Мая, 2011 - 12:50:43 - перейти к сообщению
DeepVarvar пишет:
чтения, затем записи, затем снова чтения файла-шаблона и только потом его исполнения
А по этому поводу?
6. Awilum - 07 Мая, 2011 - 12:52:20 - перейти к сообщению
DeepVarvar
Я написал выше алгоритм по которому работает Popcorn
Я написал выше алгоритм по которому работает Popcorn