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
Форумы портала PHP.SU :: Версия для печати :: POPCORN TEMPLATE ENGINE
Форумы портала PHP.SU » » CMS и фреймворки » POPCORN TEMPLATE ENGINE

Страниц (1): [1]
 

1. Awilum - 06 Мая, 2011 - 22:20:38 - перейти к сообщению
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
2. DeepVarvar - 06 Мая, 2011 - 22:56:12 - перейти к сообщению
Добавьте ф-цию (аля compressHTML), назовем её например "lyingHTML" (?) которая будет убирать повторяющиеся пробелы,
табуляцию и переводы строки, заменяя их на еденичные пробелы.
Как-никак - еще одна щепка (палкой не назвать конечно) в колеса кулхацкеров.
Но плеваться и рычать оные будут точно Закатив глазки
3. DeepVarvar - 07 Мая, 2011 - 10:49:54 - перейти к сообщению
Кстати, да...
Вчера когда начал читать класс попкорна, почему-то подумал что в конце будет использован eval().
Однако..
Зачем делать лишние обращения к диску?
Думаю проще сделать eval() полученой конечной строки, без (как у вас) чтения, затем записи, затем снова чтения файла-шаблона и только потом его исполнения.
Сбросить можно на диск уже готовый статичный шаблон перехватив вывод через ob_get_contents(), как-никак - считай кеш.
И проверять его на устаревание например filemtime(time()-600) или иное время устанавливаемое как параметр при инициализации класса.
4. Awilum - 07 Мая, 2011 - 12:18:41 - перейти к сообщению
Цитата:
Зачем делать лишние обращения к диску?
Думаю проще сделать 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

 

Powered by ExBB FM 1.0 RC1