/** * Загрузить окружение из файла * @param string $name название окружения * @return array * @throws Exception если файл окружение существует, но не может быть прочитан */ private function _loadEnviron($name) { $path = Gliss_Core::call('Service_Reg')->folderEnvirons . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $name) . '.ini'; if (file_exists($path)) { if (is_readable($path)) { return parse_ini_file($path, true); } else { throw new Exception("Файл {$path} существует, но не может быть прочитан", 0x1); } } return array(); }
/** * PSR-0 * https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md * @param string $className */ public function PSR_0($className) { set_include_path(Gliss_Core::call('Service_Reg')->folderLibraries); $className = ltrim($className, '\\'); $fileName = Gliss_Core::call('Service_Reg')->folderLibraries; $namespace = null; $lastNsPos = strripos($className, '\\'); if (!empty($lastNsPos)) { $namespace = substr($className, 0, $lastNsPos); $className = substr($className, $lastNsPos + 1); $fileName .= str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; } $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; if (is_readable($fileName)) { require $fileName; } else { throw new Exception("Файл {$fileName} не найден или не доступен для чтения", 0x1); } }
/** * Получить приложение * @param string $name Название приложения * @param array|null $arguments Аргументы для передачи в конструктор * @return array|null * @throws Gliss_Servece_App_Exception если файл не найден или не может быть прочитан * @throws LogicException если класс не определен */ private function _getApp($name, $arguments = null) { if (!isset($this->_appendices[$name])) { $path = Gliss_Core::call('Service_Reg')->folderAppendices . str_replace('_', DIRECTORY_SEPARATOR, $name) . '.php'; if (!is_readable($path)) { throw new Gliss_Servece_App_Exception("Файл {$path} не найден или не может быть прочитан", 1); } require_once $path; if (!class_exists($name)) { throw new LogicException("Класс {$name} не определен"); } if (!empty($arguments)) { $reflection = new ReflectionClass($name); $this->_appendices[$name] = $reflection->newInstanceArgs((array) $arguments); } else { $this->_appendices[$name] = new $name(); } } return $this->_appendices[$name]; }
/** * Псевдоним вызова сервиса Lib * @return object */ function Lib() { return Gliss_Core::call('Service_Lib'); }