PHPFAQ  
Начинающим   Технологии   MySQL   Ошибки   Ссылки   Юмор   О сайте   Форум   PHP Club  

Шаблоны


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

Самое простое и очевидное заблуждение состоит в том, что новички называют шаблоном вынесенный в отдельный файл "дизайн" - обший html для всех страниц сайта. И на этом успокаиваются. Динамическую информацию, ничтоже сумняшеся, выводя старым добрым echo :-)
На самом же деле, шаблонизатор в основном занимается выводом изменяющегося содержимого страниц сайта. А вывод "дизайна" - задача второстепенная.

Фантазий главных две:
1. Шаблоны нужны "дизайнеру", чтобы он мог их править, не разбираясь в PHP.
2. Следовательно, шаблоны служат для отделения PHP от HTML.

Давайте попробуем задуматься над первым утверждением. Кто такой дизайнер? Это человек, который работает в фотошопе. HTML он чаще всего не знает вообще. А над шаблоном работает либо специальный верстальщик или - чаще всего... сам программист! Смешно, правда?
Теперь следствие, про отделение PHP от HTML. Отлично. Перед нами стоит святая цель отделить. Поэтому мы придумываем Смарти и пишем:
{foreach key=cid item=con from=$contacts}
    <a href="contact.php?contact_id={$cid}">{$con.name} - {$con.nick}</a><br />
{/foreach}

Ещё смешнее.
"Дизайнер", ради которого все затевалось, падает в обморок от счастья.

Получается, наши причины, по которым мы решили пользоваться шаблонами, гроша выеденного не стоят. И что, не нужны, выходит, шабоны вообще? Нужны. Но сначала надо ответить себе на вопрос - зачем. Для чего нужны шаблоны. И проверить ответ практикой. Я много раз задавал людям этот вопрос. Но почти никто не может на него ответить. Зачем ему нужны шаблоны. Получается, люди делают что-то, не зная зачем.
Это - самое смешное.

За время своей деятельности в качестве веб-программиста я сформулировал для себя три причины, по которым нужны шаблоны лично мне. По сути, их две. А сводятся, в конечном счете, к одной:

Один код - несколько представлений.

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

Часто одну и ту же информацию надо показывать в нескольких видах. К примеру - обычная страница и страница для печати. Информация та же самая, код её получения один и тот же, а код вывода - разный. Столкнувшись с такой ситуацией, очень быстро разделишь свой код на две части, одна из которых отвечает за вывод, а вторая - не отвечает.

В чем-то похожая ситуация: допустим, наш скрипт стоит на двух сайтах. И у нас дома. И вот дома мы нашли крупную багу. Заделали её. Теперь надо обновить код на сайтах. И вот он - момент истины: если шаблоны были использованы правильно, то мы просто заливаем код на оба сайта, и все продолжает работать, как ни в чем не бывало! Такая ситуация, как я считаю - идеальная проверка выбранного подхода к шаблонизации.

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

Другие материалы раздела:
Сессии. Подробное описание работы и объяснение механизма.
Регулярные выражения.
Mail injection. Работа с e-mail средствами PHP.
Определение IP адреса
Безопасность PHP скриптов


Комментарии

Сергей 26.07.10 21:28
как-то странно читать такие рассуждения в 2010 году. По-хорошему шаблоны не нужны - лучше использовать управляемую трансформацию (xsl). Конечно стоит допускать и наличие активных и нативных шаблонов. Все это прекрасно реализуемо в рамках стандарта. И дизайнеру и верстальщику понятно. Главное что бы было понятно менеджеру проекта - что в конце должно получиться. Вот вопрос который меня мучит: а почему все повторяют за Мартином Фаулером что MVC это хорошо? А как же web 2.0? Что хорошо для данных со статической структурой - смерть для данных сос структурой динамической.
Ответ: Разницы нет никакой. XSL - такой же шаблонизатор, как и другие: программа, которая на основании исходных данных (XML) формирует HTML. От программы на PHP отличается только синтаксисом и форматом исходных данных.
С вебдванолем то же самое. Серверу нет никакой разницы, кто у него запрашивает данные - браузер или жабаскрипт. View просто натравит json_encode на данные вместо шаблонизатора.
Вся разница только в красивости слов "управляемая трансформация" и "вебдваноль". Но этот сайт не о литературе, а о технологии.
Александр 27.02.10 20:51
Вопрос нужности или ненужности шаблонов здесь встал только потому, что в качестве языка используется php (при чем php4). Ведь php по сути является шаблонизвтором, а не полноценным языкрм. В 5-м php (как и в perl, python и т.д.) идеология программирования совершенно другая, принцип MVC используется повсюду, поэтому вопрос использования или неиспользования шаблонов вообще не стоит — шаблоны являются частью программной архитектуры, которая доказала свое превосходство.
СВЕТЛАНА 07.01.10 20:38
Когда я ввожу свой e-mail мне отвечает что адрес введен неверно.В чем может быть проблема.
ГПК 02.10.09 16:47
Ваши слова о том, что вместо верстальщика зачастую выступает программист, доказывает то, как выглядят шаблоны популярного блог-кмс движка wordpress - там голый php-код.

Почему бы не использовать шаблоны с целью избежания внесения глюков в код сайта, захотев однажды изменить его дизайн?
Ответ: В шаблонах вордпресс не голый РНР код, а РНР код, который взаимодействует с HTML.
Для сравнения рекомендую посмотреть движок XSLT
Глюки можно внести в любом движке.
Гость 23.02.09 15:21
Главное цель шаблонизации - повторное использование кода, это основная методология, которая применяется для сокращения трудозатрат при разработке сложных систем.
Если есть сайт с 200 страницами, то глупо писать под каждую страницу свой html-дизайн, еще сложнее потом делать редизайн (менять все 200 страниц) - на ХТМЛ эта проблема частично могла быть решена использованием фреймов (например два фрейма - header.html и footer.html)
На PHP это решаеться так называемым использованием "шаблонов".
Две, приведенные в статье, фантазии, на самом деле являются проблемой:
Выносить HTML-код из PHP, для удобной работы не только дизайнера, но и программиста.

так называемые "высшие соображения" естественно глупо использовать для личной странички, сайта-визитки.. Но обязательно должны учитываться при разработке сложных(крупных) проектов.
Ответ: Спасибо за отличную коллекцию заблуждений!
- Никакие, разумеется, не "высшие соображения" приводят нас к использованию шаблонов, а технологическая необходимость. И никакой разницы нет, большой ты делаешь проект, или маленький.
- "удобство программиста" - понятие субъективное. Шаблоны - объективное. Разговаривать имеет смысл только с тем, кто может объяснить - чем именно удобно.
- главное заблуждение чайников: они думают, что шаблон - это "дизайн", рыба сайта. Хидер и футер, ага. А содержимое выводится, ничтоже сумняшеся, через echo. Объяснить, что главный шаблон - это шаблон страницы, а не всего сайта - наша задача.

Написать комментарий
Пожалуйста, воздержитесь от посылки спама.
Сообщения, содержащие гиперссылки, проходят премодерацию.
Представьтесь:
Вы робот?
Сообщение:

© phpfaq.ru, 2010
Rambler's Top100 0.022 sec.