Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > Шаблонизатор - Попкорн!


Автор: awilum 7.5.2011, 13:02
user posted image

Решил для своей 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.template-cms.org/

Так же Popcorn можно подключить к CodeIgniter: http://popcorn.template-cms.org/#3

Автор: cutwater 7.5.2011, 15:16
Велосипед на велосипеде и велосипедом погоняет. 
1. Зачем?

2. Что бросается сразу в глаза: отсутствие хоть какой-нибудь концепции layout, наследования шаблонов, что-либо еще.
или предлагаете все писать корявой логикой на инклюдах?
А какие шаблонизаторы рассматривали прежде чем приступить к написанию своего?

3.
Цитата

{run function()}

Бизнес-логика в шаблонах?

4.
Если убрать все рюшки аля dump, vars, codes в сухом остатке останется:
assign, if, loop, include
Действительно простой шаблонизатор

5.
Различать константы / переменные, а нужно ли?

6.
Документация откровенно паршива.
Цитата

{file 'filename'} - Load file 

Хм... вот любопытно что же автор имел ввиду и какие принципиальные отличия от include?

7.
Пример с variable assigment слегка странен
А должно ли попадать в Result?
Цитата

{assign year '2011'}


8. Лицензия:
GNU GPL 3 License
Поправьте если ошибаюсь в деталях, но с такой лицензией Ваш шаблонизатор в принципе не применим кроме
как к продуктам для внутреннего использования и продуктов под GPL лицензией.

P.S. Исходники не смотрел.

Посмотрел: настройте IDE, у Вас каша с отступами табы и пробелы одновременно. (заметно при tab=8)

Вердикт: поделка, не нужно!

Автор: awilum 7.5.2011, 19:11
>1. Зачем?
1) Мне не нужен в моей cms Smarty(хоть и делал несколько проектов с ним) из за его прожорливости
2) Не использовать в своей CMS чужую либу, когда могу написать свою и по проще. Есть все что надо, хоть и это assign, if, loop, include хм а что еще ? все это же юзаю и в смарти.


>А какие шаблонизаторы рассматривали прежде чем приступить к написанию своего?
Я имею опыт работы с Smarty и XTemplate. Но написал этот. смотреть пункт 1) и 2)

>Бизнес-логика в шаблонах?
да знаю. чувак ныл мол а как же ему запустить функцию.. убрать не проблема эту рюшку. спасибо.


>Различать константы / переменные, а нужно ли?
{var name $var2} - Assign local template variable    
{const name $value} - Assign constant    
{assign var 'value'} or {assign var $value} - Assign global variable    
да иногда надо временные переменные а если надо передать в дочерний шаблон {assign} 

но не часто такое...

>Хм... вот любопытно что же автор имел ввиду и какие принципиальные отличия от include?
{file} - загружает просто html файл не парсит и не компилирует.
{include} - выполняет draw() и если временные {var} {const}  в шаблоне были {assign}  то они попадут в этот дочерний.  Ив подключенный шаблон попадут те переменные что были зарегистрированы  в контроллере(приложении). Посмотрите пример в архиве.


>GNU GPL 3 License
да GNU GPL 3 License как и https://bitbucket.org/Awilum/template-cms

Автор: awilum 7.5.2011, 19:32
Цитата

Посмотрел: настройте IDE, у Вас каша с отступами табы и пробелы одновременно. (заметно при tab=8)

Открываю в Sublime text и Notepad++ все нормально. 

Автор: cutwater 7.5.2011, 21:06
Цитата(awilum @  7.5.2011,  18:32 Найти цитируемый пост)
Открываю в Sublime text и Notepad++ все нормально.  

А Вы таки поставьте размер табуляции != 4.

Цитата(awilum @  7.5.2011,  18:11 Найти цитируемый пост)
да GNU GPL 3 License как и Template CMS

Ну и кому нужна Ваша CMS и шаблонизатор под такой лицензией? А если для себя, так зачем пиариться?

UPD: Даже если для CMS допустимо распространение под GPL (о чем надо бы завести отдельный разговор)
То для шаблонизатора все же такая лицензия является весьма неудобной.

Цитата(awilum @  7.5.2011,  18:11 Найти цитируемый пост)
Посмотрите пример в архиве.

Поведение описано в документации недостаточно полно.
Субъективное мнение: операция сама по себе равнозначная и по сути пользователя не должно волновать что там: шаблон или просто файл.

Речь как раз о том что шаблонизаторов великое множество и Smarty c концептуальной точки зрения далеко не лучший его представитель.
Можете найти тему посвященную проектированию шаблонов.

Прочие рекомендации: Сменить лицензию, сменить sourceforge на github вместе с системой контроля версий, привести таки код к единому виду (либо Tabs либо Spaces) смешивать не хорошо.

Автор: Muerto 7.5.2011, 21:07
Автору конечно респект и молодец...

Любопытно было бы провести тесты на скорость ... 
Я к примеру люблю Haanga,  имхо лучшее на сей день что можно получить по функционалу и прожорливости к памяти(он оч быстрый и легкий, но есь даже наследие)

Автор: awilum 7.5.2011, 21:17
Цитата

Если убрать все рюшки аля dump, vars, codes в сухом остатке останется:
assign, if, loop, include
Действительно простой шаблонизатор

хм. на работе проект типа "соц сети". Юзается Smarty. И в шаблонах if, foreach, include ну и еще date_format иногда встречается вот и все. "Действительно простой шаблонизатор" и что ? 

Цитата

Ну и кому нужна Ваша CMS

представьте себе такого рода CMS специально для сайтов визиток, сателлитов, домашних страничек пользуются спросом: http://www.cmsbezmysql.ru/category/vizitki

Цитата

под такой лицензией

да, наверное надо было за денежку отдавать как другие ? 
http://forum.searchengines.ru/showthread.php?t=250959

Цитата

сменить sourceforge на github вместе с системой контроля версий

меня устраивает меркуриал и битбакет: https://bitbucket.org/Awilum/popcorn


Цитата

А если для себя, так зачем пиариться?

Тема создана для фидбека: критика, советы, предложения.

Автор: cutwater 7.5.2011, 21:19
Цитата(Muerto @  7.5.2011,  20:07 Найти цитируемый пост)
Haanga

Цитата
Django style for PHP


Кстати что характерно, все более менее удачные шаблонизаторы представляют собой кальку с джанги.
Небольшой камень в ваш огород господа. Как-нибудь можно пофлеймить на тему.


Добавлено @ 21:20
Цитата(awilum @  7.5.2011,  20:17 Найти цитируемый пост)
меня устраивает меркуриал и битбакет: https://bitbucket.org/Awilum/popcorn

Ссылку на сайте не видел, мои извинения.

Цитата(awilum @  7.5.2011,  20:17 Найти цитируемый пост)
да, наверное надо было за денежку отдавать как другие ? 

Имеется ввиду, что для конечного продукта GPL является довольно таки удобной лицензией, в отличие от промежуточных продуктов, библиотек, фреймворков, etc.

Автор: awilum 7.5.2011, 21:24
haanga по синтаксису мне напоминает Twig

Автор: cutwater 7.5.2011, 21:27
Цитата(awilum @  7.5.2011,  20:24 Найти цитируемый пост)
Twig 


Который по синтаксису напоминает Jinja (автор один), который по синтаксису напоминает Django... ну и так далее.
Можно конечно еще заняться вопросом что появилось раньше, однако по дизайну все эти шаблонизаторы примерно похожи концептуально и синтаксически.

Автор: Muerto 7.5.2011, 21:43
А Haanga напоминает таки Twig или Django

Ток по сравнением с Twig работает в десятки раз быстрей и памяти жрет в десяток раз меньше, а функционал почти такой же  smile 

Автор: awilum 8.5.2011, 00:35
Сделал снипеты для  http://www.sublimetext.com/

@@ - {@ $var}
@echo - {echo $var}
@if - {if $var} {/if}
@ifelse - {if $var} {else} {/if}
@ifelseif - {if $var} {elseif $var} {/if}
@loop - {loop $key as $item} {/loop}
@var - {var name $var2}                
@const - {const name $value}                
@assign - {assign var $value}
@include - {include 'template_name'}
@file - {file 'filename'}
@run - {run function()}
@vars - {vars}
@codes - {codes}
@dump - {dump $var}
        
Скачать: http://popcorn.template-cms.org/files/st_snippets/popcorn.zip

Установка: Распаковать в папку Sublime Text\Packages\User

Автор: gcc 8.5.2011, 00:51
awilum, на perl есть очень мощный шаблонизатор, там вообще как другой язык smile
http://ru.wikipedia.org/wiki/Template_Toolkit
http://template-toolkit.org/
http://www.template-toolkit.ru/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)