Потратил несколько дней и написал шаблонизатор на подобии того, что есть в фреймворке Laravel. Описание постарался составить как можно шире и понятнее. Обзор продлился на 3 страницы, вместе с примерами работы. Получилась небольшая документация. Ставить тут 3 страницы обзора не прилично :) так что скину ссылки по частям с примерами кода
-> Скачать сам шаблонизатор: скачать
Часть 1: Сам код шаблонизатора, несколько примеров работы
Часть 2: Работа с TPL файлами, циклы for, foreach, while условия if / else / elseif
Часть 3: Разделение шаблонов на блоки, подключения файлов шаблона
Несколько примеров:
<?php
header('Content-Type: text/html; charset=utf-8');
include_once('libs/Miranda.php');
$Miranda = new Miranda;
$Miranda->template_engine = 'Miranda';
$Miranda->month = array(
'january' => 'Январь',
'february' => 'Февраль',
'march' => 'Март'
);
echo $Miranda->make('main');
?>
Файл main.tpl
Привет от шаблонизатора {{ $template_engine }}<br />
Первые три месяца года: <br />
@begin foreach($month as $english => $russian)
English: {{ $english }} в руском: {{ $russian }}<br />
@end
<hr>
@begin if($month['january'] != 'Январь')
Первым месяцом является январь!
@else
Все правильно
@end
<hr>
@begin for($n=0; $n<=10; $n++)
Номер: {{ $n }}
@end
<hr>
Подключаем файл some.tpl из папки templates / users / @include(users.some)
<hr>
После искусственной компиляции новый файл будет создан в папку templates / compiled / main.php
Его Содержимое
<?php # lastedit[1343485073] ?>
Привет от шаблонизатора <?php echo $template_engine; ?><br />
Первые три месяца года: <br />
<?php foreach($month as $english => $russian) { ?>
English: <?php echo $english; ?> в руском: <?php echo $russian; ?><br />
<?php } ?>
<hr>
<?php if($month['january'] != 'Январь') { ?>
Первым месяцом является январь!
<?php } else { ?>
Все правильно
<?php } ?>
<hr>
<?php for($n=0; $n<=10; $n++) { ?>
Номер: <?php echo $n; ?>
<?php } ?>
<hr>
Подключаем файл some.tpl из папки templates / users / <?php $this->attach('users.some'); ?>
<hr>
Мне нужно услышать ваше мнение, как сделать иначе некие методы или что нужно переделать.
Шаблонизатор в Бета-тесте