Автор Тема: class Template. Зацените.  (Прочитано 8634 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
class Template. Зацените.
« Ответ #15 : 19 Апреля 2003, 01:10:16 »
а вообще смысл всего этого кода если в итоге получается надо писать то же самое что и в данном случае

$patterns 
= array (
"%tool%",
"%header%",
"%maintext%",
"%rootfolder%",
"%spacer%")

$replacements = array (
$tool,
$header,
$maintext,
$rootfolder,
$spacer);

$tpl str_replace($patterns$replacements$tpl);

я не вижу смысла написания этого класса?

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
class Template. Зацените.
« Ответ #16 : 19 Апреля 2003, 01:55:44 »
Цитировать
Tronyx:
1. Разрешить php код в шаблоне.


Вот это блин круто :))). Вообще-то вся фича PHP и состоит в том, что можно вставлять код в html-файл, если ты не в курсе ;).

А теперь ты предлагаешь шаблонизатор, который релизует функциональность, реализованую в самом интерпретаторе.

Зачем?
Не все коту матрица.

Оффлайн D1g174LM4n14c

  • 1m
  • Постоялец
  • ***
  • Сообщений: 137
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
class Template. Зацените.
« Ответ #17 : 19 Апреля 2003, 10:28:36 »
Цитировать
nagash:
я не вижу смысла написания этого класса?
да, но я все это дорабатываю, придаю выразительности, функциональности и т.д.

Цитировать
Croaker:
А теперь ты предлагаешь шаблонизатор, который релизует функциональность, реализованую в самом интерпретаторе.
а зачем изобретать колесо? можно, конечно, парсить html и искать php-код, а затем его в eval()... а смысл? если и так работает...
Мы такие!

Оффлайн D1g174LM4n14c

  • 1m
  • Постоялец
  • ***
  • Сообщений: 137
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
class Template. Зацените.
« Ответ #18 : 19 Апреля 2003, 11:10:19 »
Цитировать
nagash:
а вообще смысл всего этого кода если в итоге получается надо писать то же самое что и в данном случае

$patterns = array (
"%tool%",
"%header%",
"%maintext%",
"%rootfolder%",
"%spacer%")

$replacements = array (
$tool,
$header,
$maintext,
$rootfolder,
$spacer);

$tpl = str_replace($patterns, $replacements, $tpl);

не совсем так... тут ты просто заменяешь одни "переменные" другими... а в том классе, что мы обсуждаем, переменным присваеваются результаты парсинга шаблонав, а затем они (переменные) используются в других шаблонах, потом в третьих и т.д. Структура ЕСТЬ!
Мы такие!

Оффлайн MrGreeN

  • просто зелёный
  • Постоялец
  • ***
  • Сообщений: 195
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
class Template. Зацените.
« Ответ #19 : 19 Апреля 2003, 12:21:25 »
Разрешите вставить свои пять копеек...;)
Енто всё конечно круто, но зачем собаке пятая нога?...( без обид...)

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
class Template. Зацените.
« Ответ #20 : 19 Апреля 2003, 19:49:36 »
Цитировать
D1g174LM4n14c:
я же говорил, что это не библиотечный класс. Зачем делать обработку ошибок в своем же классе. Главное - внимательно писать код - тогда не нужно будет тратить время на обработку ошибок.

Если пишишь для себя то да, а если на продажу, где "за рулём" сидит НЕпрограммист... будешь дописывать свой класс? Нелегче ли сразу это сделать? :)

Цитировать
D1g174LM4n14c:
а что ты имеешь ввиду под модкльностью в данном контексте?

Если ты хочешь добавить какую-то фичу ты не лезешь в код класса, ты создаёшь файл-плагин. Посмотри как Smarty устроен (кстати пока я эту фичу видил только в нём)

Цитировать
D1g174LM4n14c:
ды, с таким же успехом можно обойтись вообще без шаблонизаторов. просто в нужных местах юзать include\\require операторы...

Ты не понял. Используется тот же класс и как в твоём случае, та же функция "output" только происходит не парсинг, а компиляция. Разницу видишь?

Цитировать
Макс:
ИМХО это противоречит самой идеологии шаблонов
Дизайнер (или html-кодер) тебе там такого php-кода напишет

Полностью согласен. Меня просили привести пример того как можно наворотить, а можно != нужно.

Цитировать
Макс:
ты имеешь ввиду сделать как в шаблонизаторе Britva-ы, где шаблонизатор использует для подстановки меток переменные из глобального пространства имен ? И таким образом не нужно делать assign.

Да. Только как это сделано у Бритвы мне не нравится, там ещё eval() с вызовом какой-то функции нужен, а посути это тот же assign(). У меня проще:
скрипт:
$QuickTemplate=new QuickTemplate(\'template.tpl\');
$var=\'Переменная\';
$QuickTemplate->PrintPage();
?>
Шаблон:
Var={$var}

Цитировать
Croaker:
Вот это блин круто )). Вообще-то вся фича PHP и состоит в том, что можно вставлять код в html-файл, если ты не в курсе

Вот это блин какой ты крутой и чертовски "умный". :D Попробуй например в шаблоне для FastTemplate(или каком-нибудь похожем) писать на PHP. Если не "заложить" эту функцию, то у тебя ничего не получится.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
class Template. Зацените.
« Ответ #21 : 20 Апреля 2003, 00:36:32 »
Цитировать
Tronyx:
Вот это блин какой ты крутой и чертовски "умный".  Попробуй например в шаблоне для FastTemplate(или каком-нибудь похожем) писать на PHP. Если не "заложить" эту функцию, то у тебя ничего не получится.


В FastTemplate нельзя. Потому как основной смысл написания шаблонов - отделения html от PHP. А шаблон, в котором будет использоватся PHP вставка... Весь смысл пропадает (вместе со скоростью).
Не все коту матрица.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
class Template. Зацените.
« Ответ #22 : 20 Апреля 2003, 07:58:27 »
Цитировать
Макс:
ИМХО это противоречит самой идеологии шаблонов
Дизайнер (или html-кодер) тебе там такого php-кода напишет
------------------
Полностью согласен. Меня просили привести пример того как можно наворотить, а можно != нужно.


Цитировать
Croaker:
вместе со скоростью

Если применять компиляцию шаблонов(например как в Smarty) скорость совершенно не тереятся.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
class Template. Зацените.
« Ответ #23 : 20 Апреля 2003, 12:42:51 »
Tronyx
Цитировать
Да. Только как это сделано у Бритвы мне не нравится, там ещё eval() с вызовом какой-то функции нужен, а посути это тот же assign(). У меня проще:
Вообще я в последенее время тоже склоняюсь к идее отказа от assign, только ИМХО разумнее шаблонизатором не переменные использовать, а какой-то массив:

// первый параметр - папка с шаблонами
// имя массива со значениями меток
$tmpl = new Template(\'./templates/dir/\', \'_vars\');
... 
// установка переменных шаблона
$_vars = array(\'label1\'=>\'text 1\', \'label2\'=>\'text2\'); 
echo $tmpl->toHtml(); // вывод пропарсенного шаблона

Так будет хотя бы какое-то разделение пространства имен.
А то дизайнер тебе напишет в шаблоне
{$dbhost}
{$dbuser}
{$dbpass}
{$dbname}

и любой увидит параметры доступа к БД
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
class Template. Зацените.
« Ответ #24 : 20 Апреля 2003, 14:04:22 »
Цитировать
Макс:
А то дизайнер тебе напишет в шаблоне


{$dbhost}
{$dbuser}
{$dbpass}
{$dbname}

и любой увидит параметры доступа к БД


[OFF]
Руки таким дизайнерам надо отрывать :)
А вообще, дизайнер и программер - одна команда! Зачем друг-другу заподлянки устраивать :) ?
[/OFF]
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
class Template. Зацените.
« Ответ #25 : 20 Апреля 2003, 14:52:25 »
FreeSpace
[off] это я просто пример привел, почему следует разделять переменные шаблонизатора от глобальных переменных скрипта [/off]
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
class Template. Зацените.
« Ответ #26 : 20 Апреля 2003, 21:31:15 »
Цитировать
FreeSpace:
А вообще, дизайнер и программер - одна команда!

Иногда нет, Макс правильно говорит.

Цитировать
Макс:
Вообще я в последенее время тоже склоняюсь к идее отказа от assign

:beer: А я уж думал сейчас начнётся жудкий спор, как на Xpoint :)

Цитировать
Макс:
А то дизайнер тебе напишет в шаблоне

Всё схвачено. ;) Как правило опасными для вывода могут быть несколько переменных(данные для БД, пароль админа и т.п.) Мы их засовываем в массив $private или ещё какой-нибудь и пишем:
$tpl->BlockVar("private");
или
$tpl->BlockVar(array("admin_pass", "db_host", "db_user", "db_pass"));
И эти переменные в шаблоне нельзя использовать.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28