Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: условия if в шаблоне
 
 автор: Loki   (06.06.2006 в 14:07)   письмо автору
 
 

Назрела необходимость прикрутить такую возможность к шаблонизатору.
Подглядел синтаксис у смарти:

{if $name eq "Fred"}
    Welcome Sir.
{elseif $name eq "Wilma"}
    Welcome Ma'am.
{else}
    Welcome, whatever you are.
{/if}

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

{if is_array($foo) }

Получается, что в этом случае они просто прогоняют выражение через eval?
Возникает вопрос: есть ли вообще смысл парсить выражение в шаблоне? или просто брать его оттуда и, в зависимости от значения возвращенного eval действовать дальше. Кто делал, или хотябы сталкивался близко - подскажите! А то смущает меня такой подход...

   
 
 автор: P@Sol   (06.06.2006 в 14:27)   письмо автору
 
   для: Loki   (06.06.2006 в 14:07)
 

может будет полезно:
альтернатива if...else

   
 
 автор: Loki   (06.06.2006 в 17:24)   письмо автору
 
   для: P@Sol   (06.06.2006 в 14:27)
 

Не... этот вариант не спортивный:) слишком много частей получается...

   
 
 автор: isset   (06.06.2006 в 14:35)   письмо автору
 
   для: Loki   (06.06.2006 в 14:07)
 

а зачем eval?
smarty компилирует php файл, который потом будет выполняться

   
 
 автор: Loki   (06.06.2006 в 16:14)   письмо автору
 
   для: isset   (06.06.2006 в 14:35)
 

Ну я же не смарти пишу:)
Нв самом деле, если я и буду делать кэширование, то скорее всего статического html. Но это в отдаленном будущем, а пока хочу несколько увеличить гибкость системы.

   
 
 автор: cheops   (06.06.2006 в 19:43)   письмо автору
 
   для: Loki   (06.06.2006 в 14:07)
 

Лучше парсер на PHP не писать - слишком накладно получится, мне вариант с eval больше нравится (даже не смотря на то, что искать ошибки в нём гораздо сложнее).

   
 
 автор: Loki   (07.06.2006 в 10:50)   письмо автору
 
   для: cheops   (06.06.2006 в 19:43)
 

Сделал... правда, попутно возник вопрос об области видимости переменных... но этоя решил, хоть и немного коряво.
Вообще, серьезно задумался о синтаксисе и порядке обработки шаблона. Сейчас обрабатывается так:

находятся и обрабатываются все инклуды
находятся все циклы и передаются на обработку предназначенным для них функциям
обрабатываются все условия.

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования