Author |
Message |
Semen
Участник форума
Joined: 09 Jun 2003
Posts: 45
Карма: 0 поощрить/наказать
|
Posted: Wed Sep 20, 2006 10:35 am (написано за 13 минут 25 секунд)
Post subject: Шаблонизатор для ленивых - издание второе
|
|
Уже пожалуй пару лет назад я поднимал на форуме тему шаблонизатора, максимально дружественного к дизайнеру, который не хочет осваивать азы программирования. Недавно я пересмотрел эти идеи и предлагаю на суд общественности "шаблонизатор для ленивых" - LazyTemplate. Сразу оговорюсь: это не совсем готовое решение, скорее работающий прототип для демонстрации идеи. Итак идея такова: В шаблонизаторе есть только два базовых объекта - переменная и блок. Переменная это идентификатор за знаком доллара $MyVar. Блок это любой текст (как угодно перемешанный с тегами html) ограниченный двойными скобками [[ ... ]]. Блок работает либо как уловный оператор либо как цикл либо как и то и другое вместе без каких-либо "ручных" указаний. Если хоть одна из переменных внутри блока истинна (не пустая строка), то блок отображается, если нет он просто выбрасывается. Если переменная массив, то блок дублируется столько раз, сколько в масиве элементов и в каждую копию вставляется соответсвующий элемент массива. Если массивов несколько так происходит с каждым. Вложенные блоки обрабатываются "снизу вверх" по тем же правилам. Поведение блока можно изменять с помощью необязательных директив: [[{directive1 directive2...} ... ]]. Можно вставлять в блоки любой php код, вызывать пользовательские функции для различных "событий" парсера и т.п. Преимущества этого шаблонизатора:- Максимальная простота для простых задач
- Дизайнер может сам без проблем разобраться и поэкспериментировать
- Рутинные вещи вроде раскраски таблицы под зебру делаются "в одно касание"
- Можно реализовать практически сколь угодно сложные вещи используя "события" парсера
В этачменте лежит единственный файл - код и демка в одном флаконе. Любая конструктивная критика и обсуждение приветствуется! :)
Description: |
|
 Download |
Filename: |
lazy_template.rar |
Filesize: |
4.64 KB |
Downloaded: |
1197 Time(s) |
|
|
Back to top |
|
 |
Rin
Участник форума

Joined: 01 Jun 2005
Posts: 515
Карма: 185 поощрить/наказать
Location: Москва
|
Posted: Fri Sep 22, 2006 3:55 pm (спустя 2 дня 5 часов 19 минут; написано за 29 секунд)
Post subject:
|
|
По-моему, это дыра.
|
|
Back to top |
|
 |
Semen
Участник форума
Joined: 09 Jun 2003
Posts: 45
Карма: 0 поощрить/наказать
|
Posted: Mon Sep 25, 2006 9:58 am (спустя 2 дня 18 часов 2 минуты; написано за 2 минуты 20 секунд)
Post subject:
|
|
На самом деле не такая уж и дыра. Внешний злоумышленник никак в этот eval залезть не может - этот код жестко забит в шаблон и увидеть его или изменить снаружи вроде бы невозможно. Ну а если сам программист туда вставит не то что надо, то это уже его проблема :)
|
|
Back to top |
|
 |
Rin
Участник форума

Joined: 01 Jun 2005
Posts: 515
Карма: 185 поощрить/наказать
Location: Москва
|
Posted: Sat Oct 28, 2006 6:59 pm (спустя 1 месяц 3 дня 9 часов 29 секунд; написано за 27 секунд)
Post subject:
|
|
Еще по eval()... phpclub.ru/talk/showthread.php?threadid=92470&rand=3
|
|
Back to top |
|
 |
Валенок
Участник форума

Joined: 06 Apr 2006
Posts: 520
Карма: -3 поощрить/наказать
|
Posted: Sat Oct 28, 2006 7:35 pm (спустя 36 минут; написано за 17 секунд)
Post subject:
|
|
Rin
"Можно вставлять в блоки любой php код" - а как эту фичу реализовать иначе?...
|
|
Back to top |
|
 |
Semen
Участник форума
Joined: 09 Jun 2003
Posts: 45
Карма: 0 поощрить/наказать
|
Posted: Mon Oct 30, 2006 2:53 pm (спустя 1 день 19 часов 17 минут; написано за 3 минуты 47 секунд)
Post subject:
|
|
Валенок wrote: |
Rin
"Можно вставлять в блоки любой php код" - а как эту фичу реализовать иначе?... | Можно (и нужно) переделать работу самого парсера. Надо чтобы он выбрасывал "события" на все жизненно важные действия типа подстановки переменных или нахождения тегов. А пользовательские обработчики событий уже будут делать что надо. В таком случае встроенные в шаблон пхп-блоки вообще становяться ненужными и от них можно отказаться. Правда писать такое пока нет времени... :(
|
|
Back to top |
|
 |
Semen
Участник форума
Joined: 09 Jun 2003
Posts: 45
Карма: 0 поощрить/наказать
|
Posted: Thu Nov 02, 2006 11:38 am (спустя 2 дня 20 часов 45 минут; написано за 1 минуту 23 секунды)
Post subject:
|
|
Rin wrote: |
Еще по eval()... phpclub.ru/talk/showthread.php?threadid=92470&rand=3 | Гм. Прочитал. Ничего революционного не нашел. Никаких неизвестных мне дыр с безопасностью тоже не нашел...
|
|
Back to top |
|
 |
wolandino
Заглянувший
Joined: 05 Aug 2005
Posts: 16
Карма: 3 поощрить/наказать
|
Posted: Tue Nov 07, 2006 2:29 pm (спустя 5 дней 2 часа 50 минут; написано за 49 секунд)
Post subject:
|
|
Для небольших проектов - пойдет. Однако ж для меня всегда идеалом являлся Smarty.
|
|
Back to top |
|
 |
Semen
Участник форума
Joined: 09 Jun 2003
Posts: 45
Карма: 0 поощрить/наказать
|
Posted: Wed Nov 08, 2006 12:20 pm (спустя 21 час 51 минуту; написано за 48 секунд)
Post subject:
|
|
А именно для небольших и планировался т.к. нечего велосипед переизобретать.
|
|
Back to top |
|
 |
Ka3ax
Guest
Карма: 388 поощрить/наказать
|
Posted: Mon Nov 13, 2006 11:57 pm (спустя 5 дней 11 часов 37 минут; написано за 1 минуту 2 секунды)
Post subject:
|
|
а как пользоваться, пару слов. как переменные назначить? хотелось бы пример увидеть в полномасштабном виде.
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Wed Nov 15, 2006 11:52 am (спустя 1 день 11 часов 54 минуты; написано за 14 минут 31 секунду)
Post subject: Re: Шаблонизатор для ленивых - издание второе
|
|
Как я уже говорил: Semen wrote: |
Сразу оговорюсь: это не совсем готовое решение, скорее работающий прототип для демонстрации идеи. | Поэтому весьма спартански выглядит. Сейчас использую в одном из своих проектов, попутно дорабатываю.
|
|
Back to top |
|
 |
Dark-Demon
Участник форума
Banned
Joined: 04 Feb 2007
Posts: 45
Карма: -3 поощрить/наказать
Location: spb
|
Posted: Mon Feb 05, 2007 4:19 am (спустя 2 месяца 19 дней 16 часов 27 минут; написано за 59 секунд)
Post subject:
|
|
Quote: |
Блок работает либо как уловный оператор либо как цикл либо как и то и другое вместе без каких-либо "ручных" указаний. Если хоть одна из переменных внутри блока истинна (не пустая строка), то блок отображается, если нет он просто выбрасывается. | на мой взгляд лучше наоборот: если хоть одна ложна - неотображать блок. если же нам на неё плевать - реализовать возможность установки для необязательных переменных значеий по умолчанию.
|
|
Back to top |
|
 |
Rin
Участник форума

Joined: 01 Jun 2005
Posts: 515
Карма: 185 поощрить/наказать
Location: Москва
|
Posted: Thu Feb 08, 2007 2:11 pm (спустя 3 дня 9 часов 52 минуты; написано за 1 минуту 35 секунд)
Post subject:
|
|
Dark-Demon wrote: |
если хоть одна ложна - неотображать блок. | Согласен.
|
|
Back to top |
|
 |
d-maxx
Заглянувший
Joined: 25 Mar 2007
Posts: 6
Карма: 0 поощрить/наказать
|
Posted: Sun Mar 25, 2007 9:59 pm (спустя 1 месяц 17 дней 7 часов 47 минут; написано за 4 минуты 3 секунды)
Post subject:
|
|
Меня убивает такая тенденция разработчиков шаблонизаторов - запихивать фактически тот же самый PHP-код в HTML, потом его яко бы компилировать и выводить пользователю ещё и из локальной области скрипта. Зачем, когда можно всё поставить между тегами <? и ?> ? По мне так лучше сделать так, что б потом в шаблоны эти не лезть и вообще про них забыть и редактировать всё только из PHP-скрипта. Ну это по моему субъективному мнению. А так, шаблонизатор неплохой.
|
|
Back to top |
|
 |
Чечеткин Дмитрий
Участник форума
Joined: 09 Aug 2006
Posts: 27
Карма: 2 поощрить/наказать
|
Posted: Sun Aug 05, 2007 4:09 am (спустя 4 месяца 10 дней 6 часов 10 минут; написано за 1 минуту 20 секунд)
Post subject:
|
|
Понравилась идея. Если не против, добавлю аналогично работающий тег в XTL.
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Fri Sep 28, 2007 8:26 am (спустя 1 месяц 23 дня 4 часа 16 минут; написано за 12 секунд)
Post subject:
|
|
А не проще ли юзать xslt?
|
|
Back to top |
|
 |
ustas
Участник форума
Joined: 22 Jul 2004
Posts: 57
Карма: -2 поощрить/наказать
|
Posted: Sat Sep 29, 2007 11:24 pm (спустя 1 день 14 часов 58 минут; написано за 5 минут 9 секунд)
Post subject:
|
|
Гость
не проще, аргументирую: стоимость специалиста для решений на xslt выше, чем верстальщика, и наверно не ниже php'ника. Стоимость php программиста выше, чем у верстальщика. Итог: верстальщик должен оставаться им же. Или ваш бухгалтер скоро будет вам напоминать, что полы у нас моет не техничка, а высококлассный специалист по полётам в околоземное пространство на ведрах с тряпками.
|
|
Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151
Карма: 271 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Wed Jan 30, 2008 2:43 am (спустя 4 месяца 3 часа 19 минут)
Post subject:
|
|
 М |
| Ветка выделена в отдельную тему «мусор», расположенную в форуме Мусоропровод (30 Января 2008, 02:43). |
|
|
Back to top |
|
 |
|