{% else-1 %}

                        
class template {
private static $template = ''; // Главный шаблон
private static $blocks = array(); // Блоки
private static $data = array(); // Данные для главного шаблона
private static $errors = array(); // Различные ошибки

/**
* Function: get_template()
* Description: Получение шаблона
* Parameters: $template (string) Шаблон
*/

public static function get_template($template) {
if (file_exists($template)) {
self::$template = $template;
} else die ($template . ' is not exists');
}

/**
* Function: get_blocks()
* Description: Получение блоков для шаблона
* Parameters: $blocks (array) Блоки
*/

public static function get_blocks($blocks = array()) {
$total = count($blocks);
if ($total > 0) {
for ($i = 0; $i < $total; $i++) {
if (file_exists($blocks[$i])) {
self::$blocks[] = file_get_contents($blocks[$i]);
} else {
self::$errors[] = 'Block "' . $blocks[$i] . '" is not exists';
}
}
}
}

/**
* Function: set_blocks()
* Description: Вставка блоков в главный шаблон
* Parameters: $data (array) Данные необходимые для блоков
*/

public static function set_blocks($data = array())
{
$total = count($data);
if ($total > 0) {
for ($i = 0; $i < $total; $i++) {
ob_start();
extract($data[$i], EXTR_REFS);
eval(' ?>'. self::$blocks[$i] .'<?php ');
self::$data[] = ob_get_contents();
ob_end_clean();
}
}
}

/**
* Function: parse_template()
* Description: Обработка шаблона
* Return values: $content (string)
*/

public static function parse_template()
{
extract(self::$data, EXTR_PREFIX_ALL, 'tpl');
ob_start();
require (self::$template);
$content = ob_get_clean();
return $content;
}

/**
* Function: display()
* Description: Вывод содержимого на экран
*/

public static function display() {
echo self::parse_template();
}

/**
* Function: display_errors()
* Description: Сообщения об ошибках
*/

public static function display_errors() {
if (!empty(self::$errors))
echo '<p>' . (is_array(self::$errors) ? implode('<br />', self::$errors) : self::$errors) . '</p>';
}
}
Подпись: Пример использования
template::get_template('view/module1/module1.tpl');
template::get_blocks(array('tet', 'view/module1/block.tpl', 'view/module1/block2.tpl'));
template::set_blocks(array(
array('var' => 'this is var of block.tpl'),
array('var' => 'this is var of block2.tpl')
)
);
template::display_errors();
template::display();
Содержимое шаблонов:
module1.tpl
<h3>Module 1</h3>
<p>This is example of working with template class</p>
<?php echo $tpl_1 . $tpl_0; ?>
<div>End of main template of module 1</div>
block.tpl
<h1>This is block.tpl</h1>
<?php echo $var; ?>
block2.tpl
<h1>This is block2.tpl</h1>
<?php echo $var; ?>
0 26 0
Без комментариев...