/** * Метод возвращает экземпляр класса-плагина Smarty. * Для переопределения этого класса, на уровне проектного config.ini * должен быть задан другой класс. * * Это позволит использовать стандартизованный метод подключения плагинов */ public static final function inst() { if (isset(self::$inst)) { return self::$inst; //---- } /* * Получим название класса */ $class = ConfigIni::smartyPlugin(); /* * Класс подключения библиотек совпадает с базовым */ if (__CLASS__ == $class) { return self::$inst = new PSSmartyPlugin(); } /* * Нам передан класс, который отличается от SDK */ $classPath = Autoload::inst()->getClassPath($class); if (!PsCheck::isNotEmptyString($classPath)) { return PsUtil::raise('Не удалось найти класс плагинов Smarty [{}]', $class); } /* * Указанный класс должен быть наследником данного */ if (!PsUtil::isInstanceOf($class, __CLASS__)) { return PsUtil::raise('Указанный плагин Smarty [{}] не является наследником класса [{}]', $class, __CLASS__); } return self::$inst = new $class(); }