public function __construct() { /** * Подключаем cache lite */ PsLibs::inst()->CacheLite(); /* * Конфигурируем */ $liteOptions = array('readControl' => true, 'writeControl' => true, 'readControlType' => 'md5', 'automaticSerialization' => true, 'cacheDir' => DirManager::autogen('cache-lite')->absDirPath(), 'lifeTime' => ConfigIni::cacheFileLifetime() * 60, 'caching' => true); if (PsLogger::isEnabled()) { PsLogger::inst(__CLASS__)->info('Lite options: {}', print_r($liteOptions, true)); } $this->IMPL = new Cache_Lite($liteOptions); }
/** * Основной метод, выполняющий подключение всех классов из kitcore. * Нужно постараться сделать так, чтобы он отрабатывал максимально быстро, * так как мы используем его вместо принудительного подключения всех классов * через require_once. * Возможно для ускорения работы однажды мы так и сделаем. */ public function includeCore() { if ($this->CALLED) { die(__CLASS__ . ' cannot be called twice.'); } $this->CALLED = true; /* * Засекаем время подключения */ $time = microtime(true); /* * Сразу подключаем настройки и утилитные функции */ include_once 'Globals.php'; include_once 'Defines.php'; /* * Инициализируем глобальные коллекции, так как доступ к ним будет * осуществляться из всех методов данного класса. */ $this->PATHES = array(); $this->INCLUDED = array(); /* * Собираем классы из kitcore, которые нужно подключить. * Пути к php-классам будут собраны в переменную класса, чтобы к ним был * доступ и из функции autoload. */ self::loadClassPath(__DIR__, $this->PATHES, true); /* * Подключим слушатель ошибки загрузки файлов, так как классы могут быть * загружены не в правильном порядке. */ spl_autoload_register(array($this, '_autoload')); /* * Начинаем подключение */ foreach ($this->PATHES as $name => $path) { if (!array_key_exists($name, $this->INCLUDED)) { /* * Поставим отметку о том, что файл загружен напрямую. * Если этого не случится, то в функции автоподключение это * будет переопределено. */ $this->INCLUDED[$name] = 'Directly'; include_once $path; } } /* * Отключим обработчки ошибок, так как он нам больше не нужен. */ spl_autoload_unregister(array($this, '_autoload')); /* * Теперь можно использовать логгер для вывода информации о логировании */ if (PsLogger::isEnabled()) { $time = microtime(true) - $time; PsLogger::inst(__FILE__)->info('File pathes: ' . print_r($this->PATHES, true)); PsLogger::inst(__FILE__)->info('Include order: ' . print_r($this->INCLUDED, true)); PsLogger::inst(__FILE__)->info('Total time: ' . $time); } /* * Освободим память */ unset($this->PATHES); unset($this->INCLUDED); }
/** * Сохраняет статистику, собранную профайлером, в файл. */ private function saveProfiler2File($profilerId, PsProfilerInterface $profiler) { if (!$profiler->isEnabled()) { return; //--- } $saved = $this->saveToFile($this->getProfilerDi($profilerId), $profiler->getStats()); //TODO! В данный момент можно делать $profiler->reset(), но мы делаем это в onDestruct, поэтому не будем проверять. if (PsLogger::isEnabled() && $saved) { PsLogger::inst(__CLASS__)->info("+ {$profilerId}"); PsLogger::inst(__CLASS__)->info($saved); } }
/** * Метод вызывается перед вызовом метода имплементации * * @param type $filterType * @param Smarty_Internal_Template $template */ private function onBeforeCall($filterType, Smarty_Internal_Template $template) { if (PsLogger::isEnabled()) { PsLogger::inst(__CLASS__)->info("{} {}.{}({})", pad_right(++$this->CALLTTL . '.', 3, ' '), get_called_class(), $filterType, $template->template_resource); } }