Инструменты пользователя

Инструменты сайта


shablonizatory_dlja_php

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

shablonizatory_dlja_php [2019/01/04 09:06] (текущий)
Строка 1: Строка 1:
 +====== Шаблонизаторы для PHP ======
  
 +{{htmlmetatags>​
 +metatag-description=(Подборка шаблонизаторов для PHP. Template Engine в PHP.)
 +}}
 +
 +{{ ::​shablonizatory_php.jpg?​nolink&​600 |}}
 +
 +Язык [[PHP]] сам по себе может использоваться как шаблонизатор:​ [[shablonizatory_dlja_php#​izolirovanie_ot_html|Изолирование от HTML (смешанный режим)]]. Недостатком PHP, как шаблонизатора является его многословность,​ например при экранировании вывода данных.
 +
 +Различают **активные** (pull) и **пассивные** (push) шаблоны.
 +
 +**Активный шаблон**,​ работает как независимая программа со своими собственными операторами,​ циклами,​ командами подгрузки содержимого из других файлов и т.д.. Для дизайнера это выглядит сложно. Поэтому обычно для упрощения синтаксиса активных шаблонов инструкции PHP (foreach, if и.д.) "​маскируют"​ специальными псевдотегами. В дальнейшем активный шаблон специальным скриптом- транслятором переводится в обычный код на PHP, который в дальнейшем и выполняется. Недостаток активных шаблонов,​ что их как правило напрямую нельзя открывать в браузере -  будет просто видна мешанина символов,​ даже если шаблон сохранен в файле HTML.
 +
 +**Пассивные шаблоны** не включают никаких исполняемых инструкций. Пассивные шаблоны удобны когда мало блоков и много статического HTML кода.
 +
 +**Шаблонизаторы - трансляторы активных шаблонов**.
 +  * Twig]
 +  * [[https://​framework.zend.com/​|Zend View]]
 +  * [[wpru>​Smarty]]
 +
 +<​note>​Язык [[XSLT]] является классическим представителем систем активных шаблонов.</​note>​
 +
 +**Шаблонизаторы - для пассивных шаблонов**.
 +  * [[shablonizatory_dlja_php?&#​html_template_it|HTML_Template_IT]].
 +
 +====== Изолирование от HTML ======
 +  * [[http://​php.net/​manual/​ru/​language.basic-syntax.phpmode.php|Изолирование от HTML (смешанный режим)]]
 +  * [[http://​www.internet-technologies.ru/​articles/​article_36.html|Шаблоны в PHP для чайников]]. Нативный синтаксис,​ PHP как шаблонизатор.
 +
 +Если вы создаете заголовок страницы динамически с помощью PHP, затем идет статическое содержание страницы и все заканчивается динамически создаваемым футером,​ можно сделать так:<​file>​
 +<?php
 +PHP-код динамического заголовка
 +?>
 +Статичный HTML-код
 +<?php
 +PHP-код динамического футера
 +?>
 +</​file>​Более того, PHP- код продолжает выполняться с того места, на котором он оборвался,​ так что можно его разрывать даже так:<​file>​
 +<?php
 +Выражение IF {
 +?>
 +HTML-код,​ если условие IF выполняется
 +<?php
 +} else {
 +?>
 +HTML-код,​ если условие IF не выполняется
 +<?
 +}
 +?>
 +</​file><​note important>​Помните,​ что всегда нужно закрывать выражения IF и циклы - это легко забыть.</​note><​note warning> PHP допускает короткие теги <? и ?>, однако использовать их нежелательно,​ так как они доступны только если включены с помощью конфигурационной директивы php.ini short_open_tag,​ либо если PHP был сконфигурирован с опцией --enable-short-tags .</​note>​
 +====== HTML_Template_IT ======
 +Homepage: [[http://​pear.php.net/​package/​HTML_Template_IT|HTML_Template_IT]]
 +
 +HTML_Template_IT используется для пассивных шаблонов. Циклы, условия обрабатываются в php- файле, а шаблон разбит на блоки, которые заполняются отдельно друг от друга. Шаблонизатор понимает вложенные блоки.
 +<​note>​Если какой - нибудь блок или переменная не были заполнены - в конечном html файле они выводиться не будут.</​note>​
 +
 +  * Установка<​file>​
 +# aptitude install php-html-template-it
 +</​file>​
 +  * **Пример**. Замена в шаблоне переменной '​code_body'​ на наше значение.<​file>​
 +<?php
 +require_once '​HTML/​Template/​IT.php'; ​ // Полный путь к библиотеке /​usr/​share/​php/​HTML/​Template/​IT.php
 +
 +$tpl = new HTML_Template_IT();​
 +$tpl->​loadTemplatefile('​tpl/​main.html',​ true, true); // Читаем шаблон
 +$tpl->​setVariable('​code_body','​Здесь заменили code_body!!!'​); ​
 +print $tpl->​show();​ // выведем финальную страницу пользователю
 +?>
 +</​file>​Часть файла tpl/​main.html:<​file>​
 +                        <div class="​blockg">​
 +                            <!-- BEGIN block_body -->
 +                            <p> {code_body}</​p>​
 +                            <!-- END block_body -->
 +                        </​div>​
 +</​file>​
 +  * Синтаксис блока<​file>​
 +<!-- BEGIN имя блока -->
 +{переменная блока}
 +<!-- END имя блока -->
 +</​file>​
 +
 +  * **Пример**. Заменить в шаблоне блок несколькими значениями. Блок:<​file>​
 +<!-- BEGIN block_list_countries -->
 +    <p> {list_countries}</​p>​
 +<!-- END block_list_countries -->
 +</​file>​Функция замены:<​file>​
 +<?php
 +
 +require_once '​HTML/​Template/​IT.php'; ​ // /​usr/​share/​php/​HTML/​Template/​IT.php
 +$tpl = new HTML_Template_IT();​
 +$tpl->​loadTemplatefile('​tpl/​main.html',​ true, true);
 +
 +$arr=array("​first",​ 5 => "​second",​ "​third"​);​
 +foreach ($arr as $value) {
 + $tpl ->​setCurrentBlock('​block_list_countries'​);​
 + $tpl ->​setVariable('​list_countries',​ $value);
 + $tpl ->​parseCurrentBlock();​
 +}
 +print $tpl->​show();​ // выведем финальную страницу пользователю
 +?>
 +</​file>​
 +====== Ссылки ======
 +  * Котеров Д.В., Костарев А.Ф. РНР 5 в подлиннике. Глава 46. Код и шаблон страницы.
 +  * [[http://​js-php.ru/​web-development/​html_template_it/​|HTML_Template_IT – шаблонизатор от PEAR]]
загрузка...
shablonizatory_dlja_php.txt · Последние изменения: 2019/01/04 09:06 (внешнее изменение)