Разработка сайтов и создание интернет магазинов.

Обмен данными между компонентами

Немного остановлюсь на разделении компонентов на типы: prepare – эти компоненты ничего не выводят на экран, они только подготавливают данные для других компонентов или общего (главного) шаблона, и view – эти компоненты обязательно в результате своей работы что-то выводят на экран.

Давайте посмотрим, каким образом компонент prepare может подготовить данные для компонента view.

<?php
// --- Фрагмент компонента prepare ---
$smarty->assign('prepare_data', $prepare_data);
?>

Из данного фрагмента видно, что компонент prepare создал какой-то набор данных и ассигнул (assign) его в главный шаблон, присвоив этим данным имя 'prepare_data'.

Теперь давайте взглянем на главный шаблон:
<!-- Фрагмент главного шаблона -->
<!-- Вызываем компонент prepare -->
{component name='prepare'}
<!-- Вызываем компонент view -->
{component name='view' prepare_data=$prepare_data}

Как видно из этого фрагмента, сначала мы вызвали компонент prepare, а затем компонент view. В качестве параметра передали в view продукт деятельности компонента prepare.

<?php
// --- Фрагмент компонента view ---
print_r($params['prepare_data']);
?>

В свою очередь, компоненту view эти данные стали доступны посредствам массива $params, в котором появился новый индекс – prepare_data.

Итоги

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

Таким образом, используя эту технологию, вы легко можете менять логику и вид своего приложения изменяя только его шаблоны для вывода на экран, что позволяет довольно часто экономить время при разработке как простых, так и сложных приложений. Также, такой подход позволяет максимально абстрагировать ядро вашего сайта (классы) от вывода информации на экран, что дает дополнительные преимущества для создания переносимого кода и позволяет развертывать новые приложения на базе старых.

Компонентная модель разработки позволяет добиться существенного разграничения труда программистов, работающих в команде.

На этом все, надеюсь этот материал даст вам повод для новых изысканий и идей.