ШаблоныТеорияПрактика Комментарии Теория Нет, наверное, в веб-программировании темы столь же очевидной, сколь и непонятной, как шаблоны. Каждый, рано или поздно, приходит к выводу о необходимости испрользования шаблонов. Но приходит, почему-то, через какие-то дичайшие заблуждения и фантазии. Самое простое и очевидное заблуждение состоит в том, что новички называют шаблоном вынесенный в отдельный файл "дизайн" - обший html для всех страниц сайта. И на этом успокаиваются. Динамическую информацию, ничтоже сумняшеся, выводя старым добрым echo :-) На самом же деле, шаблонизатор в основном занимается выводом изменяющегося содержимого страниц сайта. А вывод "дизайна" - задача второстепенная. Фантазий главных две: 1. Шаблоны нужны "дизайнеру", чтобы он мог их править, не разбираясь в PHP. 2. Следовательно, шаблоны служат для отделения PHP от HTML. Давайте попробуем задуматься над первым утверждением. Кто такой дизайнер? Это человек, который работает в фотошопе. HTML он чаще всего не знает вообще. А над шаблоном работает либо специальный верстальщик или - чаще всего... сам программист! Смешно, правда? Теперь следствие, про отделение PHP от HTML. Отлично. Перед нами стоит святая цель отделить. Поэтому мы придумываем Смарти и пишем: {foreach key=cid item=con from=$contacts}Ещё смешнее. "Дизайнер", ради которого все затевалось, падает в обморок от счастья. Получается, наши причины, по которым мы решили пользоваться шаблонами, гроша выеденного не стоят. И что - не нужны, выходит, шабоны вообще? Нужны. Но сначала надо ответить себе на вопрос - зачем. Для чего нужны шаблоны. И проверить ответ практикой. Я много раз задавал людям этот вопрос. Но почти никто не может на него ответить. Зачем ему нужны шаблоны. Получается, люди делают что-то, не зная зачем. Это - самое смешное. За время своей деятельности в качестве веб-программиста я сформулировал для себя три причины, по которым нужны шаблоны лично мне. По сути, их две. А сводятся, в конечном счете, к одной: Один код - несколько представлений. Часто бывает так, что вместо одной информации надо показать другую. Например, код работы с БД получает вместо текста новости сообщение об ошибке. В этом случае вместо страницы новости нужно показать совсем другую - с извинениями и просбой зайти позже. С помощью шаблонов это делается элементарно. Часто одну и ту же информацию надо показывать в нескольких видах. К примеру - обычная страница и страница для печати. Информация та же самая, код её получения один и тот же, а код вывода - разный. Столкнувшись с такой ситуацией, очень быстро разделишь свой код на две части, одна из которых отвечает за вывод, а вторая - не отвечает. В чем-то похожая ситуация: допустим, наш скрипт стоит на двух сайтах. Плюс копия у нас дома. И вот дома мы нашли крупную багу. Заделали её. Теперь надо обновить код на сайтах. И вот он - момент истины: если шаблоны были использованы правильно, то мы просто заливаем код на оба сайта, и все продолжает работать, как ни в чем не бывало! Такая ситуация, как я считаю - идеальная проверка выбранного подхода к шаблонизации. У вас могут быть свои причины использовать шаблоны. Но только с одним условием - эти причины должны быть вызваны реальной, жизненной необходимостью, а не "высшими соображениями" и заботой о каких-то неизвестных вам людях. Практика Теперь от теории перейдем к практике. В самом простом случае в показе любой страницы у нас всегда будут участвовать два шаблона - общий шаблон сайта и шаблон контента конкретной страницы. Допустим, мы хотим сделать страницу со ссылками на сайты друзей. В этом случае код упрощенный код будет выглядеть так: сам файл links.php. НИЧЕГО не выводит. Только готовит данные и после этого вызывает шаблон. <?общий шаблон (tpl_main.php ): <html xmlns="http://www.w3.org/1999/xhtml">в нужном месте в него включается шaблон нашей страницы (tpl_links.php): Другие материалы раздела: Сессии. Подробное описание работы и объяснение механизма. Регулярные выражения. Mail injection. Работа с e-mail средствами PHP. Определение IP адреса Безопасность PHP скриптов |
| Саша | 08.12.11 18:10 | ||
| Мне понравилась эта сатья. Довольно таки просто сказано о том, о чем сложно говорить и не надо | |||
| Андрей | 19.05.11 16:03 | ||
| ьторь | |||
| Скад | 08.01.11 20:06 | ||
| А не проще ли задвать шаблоны с помощью: file_get_contents(); и в файле заменять с помощью: str_replace(); Т.е. у нас есть html файл с: Привет, %USER%! И php: $tpl = file_get_contents('html.html'); /// скрипт $tpl = str_replace('%USER%', $user, $tpl); echo $tpl; |
|||
|
|||
| Tigran Azatyan | 04.01.11 22:51 | ||
| Я думаю любой сегодняшний сайт имеет две части для сохранения данных, это - база данных(для контента) и файлы, которые две вида - программа и дизайн. Нужна чтобы программа, написанная мною работала "под" разных дизайнов, то есть шаблонов. Вот поэтому и нужен шаблон!!! Например я написал КМС но внедрил вес шаблон по кусочками в ПХП код. И кто будет верстать под мой КМС Сайт? никто. | |||
| Сергей | 26.07.10 21:28 | ||
| как-то странно читать такие рассуждения в 2010 году. По-хорошему шаблоны не нужны - лучше использовать управляемую трансформацию (xsl). Конечно стоит допускать и наличие активных и нативных шаблонов. Все это прекрасно реализуемо в рамках стандарта. И дизайнеру и верстальщику понятно. Главное что бы было понятно менеджеру проекта - что в конце должно получиться. Вот вопрос который меня мучит: а почему все повторяют за Мартином Фаулером что MVC это хорошо? А как же web 2.0? Что хорошо для данных со статической структурой - смерть для данных сос структурой динамической. | |||
|
|||
| Александр | 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-код. Почему бы не использовать шаблоны с целью избежания внесения глюков в код сайта, захотев однажды изменить его дизайн? |
|||
|
|||
| Гость | 23.02.09 15:21 | ||
| Главное цель шаблонизации - повторное использование кода, это основная методология, которая применяется для сокращения трудозатрат при разработке сложных систем. Если есть сайт с 200 страницами, то глупо писать под каждую страницу свой html-дизайн, еще сложнее потом делать редизайн (менять все 200 страниц) - на ХТМЛ эта проблема частично могла быть решена использованием фреймов (например два фрейма - header.html и footer.html) На PHP это решаеться так называемым использованием "шаблонов". Две, приведенные в статье, фантазии, на самом деле являются проблемой: Выносить HTML-код из PHP, для удобной работы не только дизайнера, но и программиста. так называемые "высшие соображения" естественно глупо использовать для личной странички, сайта-визитки.. Но обязательно должны учитываться при разработке сложных(крупных) проектов. |
|||
|
|||