Простейший шаблонизатор на PHP

Что такое шаблонизатор?

Шаблонизатор — код, который генерирует html-страницу из двух частей:
1. Общий шаблон.
2. Контент.

Для различных задач используются различные типы шаблонизаторов: от простых, не поддерживающих логику, до шаблонизаторов типа Smarty.

Я использую 2 шаблонизатора — один простой, для генерации разовых html-сайтов и один более мощный. Оба они — самописные.
Начнем с простого — возьмем любой html-шаблон и «распотрошим» его.


<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title of site</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="http://www.site.ru/css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<p id="header">

<a href="{http_folder}" title="Name of your Company">
<img src="images/logo.jpg" alt="Illusty web" />
</a>
</html>
<h1>Your slogan here...</h1>

Вставим нужные фрагменты мета-языка (громкое название обычных меток). Получим что-то вроде


<html>
{doctype}
<html>
<head>
<title>{title}</title>
<meta http-equiv="Content-Type" content="text/html; charset={charset}" />
<link href="{http_root}css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>

<p id="header">
<a href="{http_folder}" title="{site_name}">
<img src="images/logo.jpg" alt="{site_name}" />
</a>
<h1>{site_slogan}</h1>
</html>

Таким образом мы сделали большой шаг вперед — отделили логику представления от кода. Для окончательного «вывода» в нормальный вид нам нужен скрипт-шаблонизатор. Выглядит он примерно так:


<?php
class html_generator
{public $manual_configs;
public $template;
public $buffer;

function __construct()
{
}

public function load_template($type, $name)
{$this->buffer = file_get_contents('../../sys/templates/'.$type.'/'.$name);
}
public function mount_vars($arr)
{foreach ($arr as $parameter=>$value)
{ $this->buffer = str_replace('{'.$parameter.'}',$value,$this->buffer);
}
}
}
?>

Массив $configs выглядит так:


<?php
### META ###
$configs['site_name'] = 'Имя сайта';
$configs['site_slogan'] = 'Слоган сайта';
$configs['doctype'] = ''; // не будем вписывать doctype;
?>

Вызов шаблонизатора будет выглядеть вот так:


<?php
$generator = new html_generator();
$generator->load_template('pages','index.html');
$generator->mount_vars($configs);
?>

Не стоит забывать, что это только макет — описание принципа построения простейшего шаблонизатора. Как обычно — стоит его докручивать и писать под свои нужды. В первую очередь — для простых проектов, куда не нужны мощности таких монстров как Smarty.

No related posts.

No Comments

Start the ball rolling by posting a comment on this article!

Leave a Reply




XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>