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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Шаблонизатор

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Сложнее, значит лучше?
Ejas Tower
Отправлено: 18 Июля, 2011 - 14:33:21
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Май 2011  
Откуда: Уфа


Помог: 0 раз(а)




Здравствуйте, Уважаемые программисты!
И сразу перейду к делу. Что-то увлекся я PHP программированием, решил начать создание своего CMS с шаблонизатора. Прочел парочку статей по этой теме. Кое-где просочилась информация, что чем сложнее шаблонизатор, тем он лучше (конечно, я немного перефразировал предложение!). Основные функции я реализовал: загрузка шаблона(можно из базы данных и из файла), подстановка значений вида {KEY} => $value, кострукторы, деструкторы, вроде все поставил... Или не все? Может можно еще что-то сделать? Или это уже ни к чему? Заранее всем спасибо за внимание!
 
 Top
DeepVarvar Супермодератор
Отправлено: 18 Июля, 2011 - 14:38:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Тут человек в теме по собственным наработкам размещал неплохой шаблонизатор "popcorn" - вот там исходники посмотрите..

Скорее всего вы не организовали:
"loop-action"
eval шаблона
 
 Top
Roler
Отправлено: 18 Июля, 2011 - 15:26:25
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Ejas Tower
Вопрос, вообще, странный)

Делайте то, что именно считаете нужным, всегда. Если не понимаете зачем нужно - либо думайте, либо отказывайтесь.
А то можно такого накалякать...
 
 Top
Slavenin
Отправлено: 18 Июля, 2011 - 19:42:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




 
 Top
White
Отправлено: 18 Июля, 2011 - 21:26:16
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Ejas Tower пишет:
Может можно еще что-то сделать

я например для генерации таблиц с использованием шаблона еще обработчик делал
например:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <table>
  3. {[array name=new_table]}
  4. <tr><td>{name}</td><td>{value}</td></tr>
  5. {[/array]}
  6. </table>
  7.  


в класс шаблонизатора в этом случае отправляется массив обьектов $new_table, каждый из которых имеет свойства name и value;
сильно упрощает жизнь


-----
if(time()>1356048000) die();
 
 Top
Ejas Tower
Отправлено: 19 Июля, 2011 - 10:32:27
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Май 2011  
Откуда: Уфа


Помог: 0 раз(а)




Благодарю всех за комментарии!
Slavenin, спасибо за ссылочку! Про <?=$var?> то я совсем забыл...
 
 Top
Slavenin
Отправлено: 19 Июля, 2011 - 17:55:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




я тож задумывался раньше о написании чего-то такого-эдакого попалось как-то слово "шаблонизсатор", полазил по форумам, посмотрел и понял, что написание своего языка программирования на php вещь, хотя и крутая, но с точки зрения логики, абсолютно бессмысленная, разве что для самообразования этим заниматься... Хм а отделение php от html делается очень просто, за счет вставки в нужных местах предопределенных констант. Зачем изобретать давно изобретенное чудо техники под названьем велсипед Однако
 
 Top
Ejas Tower
Отправлено: 20 Июля, 2011 - 09:02:20
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Май 2011  
Откуда: Уфа


Помог: 0 раз(а)




Спасибо, хорошая мысль! Я уже начинаю соглашаться с этой мыслью... Хм
 
 Top
White
Отправлено: 20 Июля, 2011 - 09:25:40
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




одной из задач mvc (а раз уж речь идет о шаблонах, стоит и его упомянуть) является разделение вида(шаблона) от модели(кода). мне лично не понятно как верстальщик не знающий php(так как он ему и не нужен) будет подгонять верстку под ваш код.
Теперь рассмотрим способ "вставки констант". Константа обязательно должна быть предопределена, таким образом если ваш сайт состоит из определенных модулей/компонентов, перед непосредственным выполнением вашего шаблона ВСЕ они должны быть выполнены, чтобы сгенерировать эти константы. Это удобно, если у вас одни и те же модули работают на всех страницах сайта, но если нет? если вам необходимо запускать тот или иной модуль на отдельных страницах, зачем тогда выполнять его код постоянно?
Еще один аспект. Константа генерируемая определенным участком кода в данном случае будет скорее всего являть небольшой(а может и довольно большой) участок будущего html кода страницы. А если верстальщику потребуется немного изменить этот код, и опять же php он не знает?
Шаблонизаторы - это не языки программирования. Это лишь способ разделения одного кода от другого, и не больше.


-----
if(time()>1356048000) die();
 
 Top
Ejas Tower
Отправлено: 20 Июля, 2011 - 09:36:58
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Май 2011  
Откуда: Уфа


Помог: 0 раз(а)




Я конечно со всем этим согласен, но но недавнего момента я всегда думал, что в константы записывать можно только небольшие строки... Но все-таки, по-моему, наверное совсем простенький шаблонизатор (просто заменяет {PAGE} на значение переменной $page и выводит результат в браузер) лучше, чем заранее предопределенные константы. Разве не так?
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Июля, 2011 - 09:40:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ejas Tower пишет:
просто заменяет {PAGE}

Если делать поддержку исполнения пхп-кода в шаблоне, то str_replace("{PAGE}",.........
ну никак не ограничишься.
 
 Top
White
Отправлено: 20 Июля, 2011 - 11:00:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Ejas Tower
совсем маленький шаблонизатор будет например искать в шаблоне строки начинающиеся на "{" и заканчивающиеся "}", интерпретировать текст между этими символами например {PAGE} и к примеру запускать на исполнение модуль /page.php после чего получив результат выполнения этого модуля заменять им строку {PAGE}
(Добавление)
P.S. константа - та же переменная, значение которой определяется только один раз, и (в PHP) существует глобально. И так же как и переменная типа string она может содержать строку любой длины.

(Отредактировано автором: 20 Июля, 2011 - 11:01:26)



-----
if(time()>1356048000) die();
 
 Top
Ejas Tower
Отправлено: 20 Июля, 2011 - 11:15:52
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Май 2011  
Откуда: Уфа


Помог: 0 раз(а)




White, можно вопрос? Циферка 1356048000 внизу, это timestamp 2012 года? Не понял

(Отредактировано автором: 20 Июля, 2011 - 11:19:00)

 
 Top
White
Отправлено: 20 Июля, 2011 - 18:12:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)





Ejas Tower угу Подмигивание 21 декабря 2012 (прогнозируемый конец света 2012)


-----
if(time()>1356048000) die();
 
 Top
Ejas Tower
Отправлено: 21 Июля, 2011 - 09:29:36
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Май 2011  
Откуда: Уфа


Помог: 0 раз(а)




Круто!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB