Шаблонизатор на php

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Вирус
Сообщения: 28

Шаблонизатор на php

Сообщение Вирус » Пт июл 24, 2015 11:47 am

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

Код: Выделить всё

$title 'Заголовок страницы';
$info 'Информация о страницы';
$tpl file_get_contents('template.html'); #Получаем содержимое шаблона
#Далее меняем переменные $title и $info на метки {title} и {info} 
$tpl str_replace('{title}'$title$tpl);
$tpl str_replace('{info}'$info$tpl);
echo 
$tpl

Но как сделать шаблонизатор с инклудами других файлов, как то так:

Код: Выделить всё

{include 'body.html'}

А лучше так:

Код: Выделить всё

<!-- INCLUDE body.html --> //Пример подключения шаблона body.html

<!-- IF war1 --> //Пример условия в шаблоне
<!-- ELSE IF war2 -->
<!-- ELSE --> 
<!-- ENDIF -->

<!-- 
$WAR --> //Пример переменной в шаблоне 
Реклама
Аватара пользователя
Ки - Ки
Сообщения: 26
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Шаблонизатор на php

Сообщение Ки - Ки » Сб июл 25, 2015 11:17 am

Вирус, а какая разница писать <?php ... ?> или <!-- ... -->? Заморочек на много меньше будет, если использовать <?php ... ?> в своих шаблонах и всякие шаблонизаторы не нужны.
Вирус писал(а):Но как сделать шаблонизатор с инклудами других файлов, как то так:

Код: Выделить всё

{include 'body.html'

Тут простая замена (str_replace) не подойдет, инклуд будет выводится, как текст, а не как рабочая функция.
lyod
Сообщения: 76
Поблагодарили: 1 раз

Re: Шаблонизатор на php

Сообщение lyod » Сб июл 25, 2015 6:39 pm

А зачем самому писать шаблонизатор? Есть же готовые, в которых проработано много деталей.
Аватара пользователя
Slash
Администратор
Сообщения: 2031
Поблагодарили: 62 раза

Re: Шаблонизатор на php

Сообщение Slash » Вс июл 26, 2015 5:02 pm

Думаю делать так: парсим шаблон:

Код: Выделить всё

$html file_get_contents('URL шаблона .html'); 

Затем меняем на php код:

Код: Выделить всё

$html = preg_replace('/\<!-- INCLUDE (.*?)\-->/', '<?php include($1); ?>', $html);

Измененный код записываем в файл и сохраняем, как кэш. После того, как кэш шаблона будет готов, выводим его на экран.

Можно взять этот скрипт: Шаблонизатор на PHP и допиливать его, как Вам угодно. Ещё можно взять любой готовый шаблонизатор (слава Богу их полным полно) и посмотреть, как там это реализовано.
Аватара пользователя
Slash
Администратор
Сообщения: 2031
Поблагодарили: 62 раза

Re: Шаблонизатор на php

Сообщение Slash » Чт июл 30, 2015 7:23 am

Вот сделал, что то более похожим на то, что хочет ТС - Re: Шаблонизатор на PHP
Аватара пользователя
Вирус
Сообщения: 28

Re: Шаблонизатор на php

Сообщение Вирус » Сб авг 01, 2015 8:27 am

lyod писал(а):А зачем самому писать шаблонизатор? Есть же готовые, в которых проработано много деталей.

Я не искатель легких путей!
Slash писал(а):Вот сделал, что то более похожим на то, что хочет ТС

Спасибо, будем курить код!

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя