Просмотр поста

.
L!MP

Что бы мы в будущем могли без лишних телодвиженний получать доступ к объекту класса-шаблонизатора реализуем в нём паттерн 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 - массив с парамметрами конфигурации шаблонизатора.