Различия

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


shablonizatory_dlja_php [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 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>
  

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!