Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Шаблонизаторы] изнутри и снаружи, Несколько вопросов по этой теме 
:(
    Опции темы
CyClon
Дата 16.5.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Цитата
Я тоже совершенно не собирался сомневаться в твоих технических навыках. Я говорю о самой идее, а не о том, что ты не сможешь ее нормально реализовать.


Я тебе выше описал простоту реализации этой идея, которая будет работать очень быстро (кэширование + псевдо-компиляция)

Цитата
Т.е. тебя принципиально не устраивает именно PHP? Или ты все таки имел ввиду "HTML от программного кода"? Но ведь все эти шаблонные вставки являются все тем же программным кодом, пусть и не на PHP, точно так же не знакомыми стороннему верстальщику.


В данном случает от PHP, т.к. других интерпретируемых серверных языков не используется. Вставок у меня не будет типа foreach и т.д.

Будет что-то типо

{BLOCK_TEMPLATE:BEGIN}
Тут идет код одного блока
{BLOCK_TEMPLATE:END}

То есть, все что заключено в теги будет циклично парситься пока не будут обработаны все блоки из базы данных. Извращения типа:

Код
{BEGIN:foreach list as block}
print ... начало блока ... block ... конец блока ...
{END:foreach}


Я писать не собираюсь.

ЗЫ: Не подумайте, что я смарти считаю извращениями. Свой шаблонизатор и смарти - разные вещи, в данном случае у меня все обработкой занимается CMS, смарти же расчитан вообще на все что только можно, в т.ч. наличие только HTML шаблона и все.

Цитата
Компиляцией во что? В машинные команды? Или все-таки в тот же PHP? Тогда чем быстрее он будет чистого PHP? Нормальный php-файл, подключаемый через include() будет оттранслирован в байт-код и храниться в памяти все время работы интерпретатора (а не одного процесса).


Компиляция блоков {BLOCK_TEMPLATE:BEGIN} и т.д. в нечто типа:

Код
<?php

foreach ($list as $block) { ... }

?>


То есть я все конструкции первожу в PHP-код, так будет работать быстрее, так как не нужно запускать регулярки каждый раз.

Цитата
Тогда как они будут выглядеть в синтаксисе твоего шаблонизатора, если от {foreach} ты отказываешься?


Смотри выше, {BLOCK_TEMPLATE:BEGIN}-{BLOCK_TEMPLATE:END} будет обрабатываться циклом в PHP.

Цитата
Как обрабатываться? Формировать html-код? Тогда где же это самое чистое отделение html от PHP за которое мы тут сражаемся?


Я сражаюсь с отделением PHP кода от ядра системы, в блоках и модулях он будет допустим. В данном случае будет вставлен блок в нужное место.


--------------------
user posted image
PM   Вверх
WolfON
Дата 16.5.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



vasac, повторюсь, что есть такое слово, как абстракция. Не надо тут разводить демагогию, если-бы небыло от нее пользы - все-бы писали на ассемблере.


CyClon, жутко смахивает то, что в итоге должно получиться на xslt, мб использовать за основу именно его? или транслировать шаблоны в этот формат (надо проверить на скорость работы чистого пхп-кода и грамотного xslt-преобразователя)
PM MAIL ICQ   Вверх
CyClon
Дата 16.5.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Не знаком с x-технологиями, есть статьи для новичков? smile Знаю лишь что такое xml примерно и все.

Кстати, вот статейку нашел о синтаксисах шаблонов: http://alexlebedev.com/blog/on-html-templates/

Мне по душе "Основанный на XML" пришелся, ну и "Специализированный синтаксис + HTML" конечно же.


--------------------
user posted image
PM   Вверх
vasac
Дата 16.5.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Цитата(WolfON @  16.5.2007,  14:42 Найти цитируемый пост)
повторюсь, что есть такое слово, как абстракция. Не надо тут разводить демагогию, если-бы небыло от нее пользы - все-бы писали на ассемблере.

Каким образом такие термины как "абстракция" и "демагогия" коррелируют друг с другом, упоминанием ассемблера и тем, что я тут говорил?
PM WWW   Вверх
WolfON
Дата 16.5.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



CyClon, конечно - http://raleigh.ru/XML/XSLTutorial/ 


vasac, ок, обьясняю. Суть в том, что если-бы программисту не было удобно упрощение синтаксиса и более наглядные конструкции (в жертву скорости зачастую), коими {VAR}, в отличии от <?=$var;?> и являются (более сложные, особенно), то и не изобрели разного рода языки высокого уровня, тем более интерпретируемые. Опять-таки отделение php-кода от кода шаблонов - дизайнер по незнанию не сможет ничего напортачить и сделать трудно-уловимую ошибку. А демагогия заключается в том, что этот спор по большей части оффтопик, а аргументы заключается только в манипулировании словами, что "для меня так удобнее" и "я не понимаю". Никто ведь вас не заставляет писать свой шаблонизатор или использовать чей-то другой, если не нравится. Но преимущества шаблонизатора перед чистым php-кодом, я вроде обосновал.
PM MAIL ICQ   Вверх
xolod
Дата 16.5.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.5.2005
Где: Когда: Что:

Репутация: 4
Всего: 13



Цитата(CyClon @  16.5.2007,  12:54 Найти цитируемый пост)
Ты думаешь я не умею работать с файлами bla-bla-bla

Не надо тыкать, вы уже не в школе, я не ваш старый приятель.

Я ничего не думаю, я утверждаю что вы не сможете написать шаблонизатор лучше и быстрее, чем это делают 5 основных и куча побочных разработчиков Смарти на протяжении уже нескольких лет. Это не говорит вам о том, что вы плохой (начинающий, переходящий, не практикующий) разработчик.

Честно говоря не знаю, к чему этот спор. Наверное все от моего паталогического непонимания тех, кто каждый день старается изобрести велосипед с квадратными, элиптическими или из сахарной ваты колесами, который изобретен уже давно. А ведь так много еще только ждет, что бы его изобрели.

Это сообщение отредактировал(а) xolod - 16.5.2007, 17:09
PM MAIL   Вверх
CyClon
Дата 16.5.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Цитата
Я ничего не думаю, я утверждаю что вы не сможете написать шаблонизатор лучше и быстрее, чем это делают 5 основных и куча побочных разработчиков Смарти на протяжении уже нескольких лет. Это не говорит вам о том, что вы плохой (начинающий, переходящий, не практикующий) разработчик.

Честно говоря не знаю, к чему этот спор. Наверное все от моего паталогического непонимания тех, кто каждый день старается изобрести велосипед с квадратными, элиптическими или из сахарной ваты колесами, который изобретен уже давно. А ведь так много еще только ждет, что бы его изобрели.


Я не говорил, что хочу сделать его быстрее того же смарти, я хочу его сделать примерно таким же, но намного проще и наиболее соответсвующим моим запросам. Смарти хоть и универсален, но эта универсальность избыточна, получается какой-то "интерпретатор на интерпретируемом языке". Еще раз повторяю, что мне это не нужно и у меня совсем другие запросы, мне всего лишь нужно подставлять значения перменных и вызывать функции вывода блоков.

У кого еще какие мысли будут по этому поводу?

WolfON, за ссылку спасибо, почитаю на досуге smile


--------------------
user posted image
PM   Вверх
CyClon
Дата 16.5.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Полистал по XSLT доки, в общем, там идет преобразование XML кода, это мне не подходит, ибо дизайнеры все верстают на HTML (или xHTML), вот его мне и нужно преобразовывать. Или может я не так понял суть шаблонизатора, основанного на XSLT? Объясните.


--------------------
user posted image
PM   Вверх
vasac
Дата 16.5.2007, 19:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



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

Я не манипулировал словами ни в одном месте данной темы. И демагогию разводить так же не намерен. Просто человек занят разработками в данной области и хотел, чтобы другие поделились с ним опытом. А опыт у меня какой-никакой имеется. И в моей деятельности был период "нужно делать вообще-вообще абстрактно и вообще-вообще универсально, только что такое абстрактно я понимаю слабо". Слава богу, отпустило. И не собираюсь навязывать своего мнения. Просто хочу, чтобы как автор темы, так и, возможно, те, кто будет читать, поняли, что есть взгляды, альтернативные "невероятно полному отделению всего от всего" и, возможно, более критично посмотрели на свою концепцию.

Цитата
Суть в том, что если-бы программисту не было удобно упрощение синтаксиса и более наглядные конструкции (в жертву скорости зачастую), коими {VAR}, в отличии от <?=$var;?> и являются (более сложные, особенно), то и не изобрели разного рода языки высокого уровня, тем более интерпретируемые.

Избавьте меня от курса информатики за 7-й класс, тем более, что вывернули вы все наизнанку. Отнюдь, не синтаксисом уровни языков отличаются. А возможностью на качественно ином уровне решать проблему. "{", вместо "<?=" этого делать не позволяет.

Цитата
Никто ведь вас не заставляет писать свой шаблонизатор или использовать чей-то другой, если не нравится.

А это уже, пардон, в каком-то подрастковом стиле. Я не спрашиваю вас, какой шаблонизатор мне писать или не писать вообще. Мы тут дискутируем на определенную тему и я выражаю свою точку зрения.

Поймите, я не против шаблонизаторов, смарти, {TITLE} и т.п. Я против того, чтобы верстальщиков считали дебилами.

Это сообщение отредактировал(а) vasac - 16.5.2007, 19:42
PM WWW   Вверх
CyClon
Дата 16.5.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Цитата
Поймите, я не против шаблонизаторов, смарти, {TITLE} и т.п. Я против того, чтобы верстальщиков считали дебилами.


Верстальщик не обязан знать PHP. Если он будет что-то на нем писать -> будут ошибки синтаксические.

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


--------------------
user posted image
PM   Вверх
Хрипа
Дата 17.5.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



Вообщем конечно много написали про шаблоны но лучше всего делать так:
Код

session_start();
include("cfg.php"); //Конект к базе + либа для работы с mysql + настройки сайта и темы по дефолту + количество запесей на страницу и прочие настройки
include("interpretator.php"); // Обработчик входящих переменных
include("templ/$_COOKIE[tem].php"); // Шаблон сайта
draw_head($title,$banners); // Шапка сайта
draw_lfet_menu($links);
if ($this->$page == "index") draw_news($news);
if ($this->$page == "else") draw_content($content);
draw_right_menu($r_links);
draw_foot($glob_querys);
примерно так у меня выглядит index.php на который ссылаются все ссылки.
Контент создоётся так
$content .= "ddd";
$content .= "sss";

при помоши preg_replace ereg_replace можно отслеживать и проверять контент очень удобно и гибко
Далие файл шаблона содержит html который упровляется через функции draw_ в которые я скидую уже проверенные переменные из файла interpretator.php Лёгко можно менять бекраунд и картинку и прочие просто добавить переменную в функцию и дописать в html

Это сообщение отредактировал(а) Хрипа - 17.5.2007, 00:28
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
vasac
Дата 17.5.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Цитата(CyClon @  16.5.2007,  21:08 Найти цитируемый пост)
хотел бы услышать советы по его реализации, а не мнения рода "долой шаблонизаторы"

Я такого мнения не выражал. Шаблонизаторы это несомненно важнейшая вещь. Именно про вариант его реализации я и говорю.

Цитата(CyClon @  16.5.2007,  21:08 Найти цитируемый пост)
я захотел шаблонизатор - значит я его сделаю

И это правильно! И не слушайте никого про "велосипеды с квадратными колесами". 
PM WWW   Вверх
CyClon
Дата 17.5.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Цитата
Я такого мнения не выражал. Шаблонизаторы это несомненно важнейшая вещь. Именно про вариант его реализации я и говорю.


<?=$var?> - ты называешь это шаблонизатором? Шаблоинизатор, по идее, это какой-то программный код, который переводит более простой язык самописный на PHP, в данном случае.


--------------------
user posted image
PM   Вверх
vasac
Дата 17.5.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Цитата(CyClon @  17.5.2007,  13:17 Найти цитируемый пост)
переводит более простой язык самописный на PHP

Не, это транслятор smile
А шаблонизатор это то, что позволяет внедрять шаблоны и разруливает взаимодействие м/у ними и всем остальным.
PM WWW   Вверх
CyClon
Дата 18.5.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Вроде бы все обдумал, решил сделать шаблон в одном файле, но тут задумался о кэшировании, мне нужно будет в последствии кэшировать сайт поблочно, как это можно организовать для шаблона в одном файле? То есть мне нужно будет на шапку и низ поставить 2 часа, а для тела уже другие тайм-ауты.


--------------------
user posted image
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1077 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.