Что бы мы в будущем могли без лишних телодвиженний получать доступ к объекту класса-шаблонизатора реализуем в нём паттерн Singleton
(впринципе, это не обязательно и если кому не нравится, то можно легко переделать).
class Tpl
{
protected static $instance;
protected $vars = array( );
protected $config = array( );
public static function instance( array $config = null )
{
return (is_null(static::$instance)
? static::$instance = new static($config)
: static::$instance
);
}
protected function __construct( array $config ) {
$this->config = $config;
}
protected function __clone() {
//...
}
protected function __wakeup() {
//...
}
}И так, мы реализовали Singleton (защищенное статическое свойство Tpl::$instance хранит единый объект класса, доступ к которому осуществляется через статич. метод Tpl::instance(), прямая инициялизация класса (new Tpl) и его клонирование - запрещены.)
и два свойства класса: $vars - массив пременных шаблона и $config - массив с парамметрами конфигурации шаблонизатора.