class Template (Шаблон)

Используется для рендеринга активных php-шаблонов (php-код смешанный с html).
По умолчанию класс осуществляет кэширование результатов отработки на основе переданных данных.

В классе определены магические методы  __get  и __set,  передавать данные в шаблон можно простым обращением к свойству объекта. Внутри шаблона к данным можно обращаться с использованием конструкции $this->someKey. Стоит помнить о том, что вызов магических методов в PHP очень затратная операция, для получения максимальной производительности рекомендуем вам использовать прямой вызов методов  get(),  set() и setProperties().

class Template {

/**
* Установить менеджер кэша шаблонов, системный метод
* @param Cache_Interface $manager
*/

static public function setCache(Cache_Interface $manager)

/**
* Рендер шаблона
* @param string $path — путь к файлу шаблона
* @return string
*/

public function render($path)

/**
* Очистить данные шаблона
*/

public function clear()

/**
* Отключить кэширование
*/

public function disableCache()

/**
* Включить кэширование
*/

public function enableCache()

/**
* Получить данные шаблона
* @return array
*/

public function getData()

/**
* Переопределить данные шаблона используя ассоциативный массив ключ - значение,
* старые данные перетираются
* @param array $data
*/

public function setData(array $data)

/**
* Установить свойства шаблона
* @param string $name
* @param mixed $value
*/
public function set($name , $value)

/**
* Установить несколько свойств шаблона
* используя в качестве входящих параметров ассоциативный массив
* @param array $data
*/
public function setProperties(array $data)

/**
* Получить значение свойства
* @param string $name
* @return mixed
*/
public function get($name)

}

Пример:

<?php

$template = new Template();
// медленно 

$template->page = Page::getInstance();

$template->someData = array('apple','orange','banana');
// в 3-4 раза быстрее
$template->setProperties(
array(
‘page’=>Page::getInstance(),
‘someData’=>array('apple','orange','banana')
);
) 

echo $template->render('/path/to/template/tpl.php');

?>


Содержание файла /path/to/template/tpl.php

<h3>Items:</h3>

<ul>

<?php

       if(isset($this->someData) && is_array($this->someData))

             foreach ($this->someData as $item)

                    echo '<li>'.$item.'</li>'

?>

</ul>

comments powered by Disqus