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

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Вирус
Сообщения: 28
Зарегистрирован: Сб мар 21, 2015 7:36 am

Шаблонизатор на 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 --> //Пример переменной в шаблоне 

Реклама
Аватара пользователя
Ки - Ки
Сообщения: 27
Зарегистрирован: Чт июл 09, 2015 9:50 am
Благодарил (а): 2 раза
Поблагодарили: 2 раза

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

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

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

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

{include 'body.html'} 
Тут простая замена (str_replace) не подойдет, инклуд будет выводится, как текст, а не как рабочая функция.

lyod
Сообщения: 75
Зарегистрирован: Пн янв 06, 2014 11:13 pm
Поблагодарили: 1 раз

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

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

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

Аватара пользователя
Slash
Администратор
Сообщения: 2121
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 74 раза

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
Администратор
Сообщения: 2121
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 74 раза

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

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

Вот сделал, что то более похожим на то, что хочет ТС - Re: Шаблонизатор на PHP

Аватара пользователя
Вирус
Сообщения: 28
Зарегистрирован: Сб мар 21, 2015 7:36 am

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

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

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

Ответить Пред. темаСлед. тема

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

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