array( * * ), * ... , * ); * @var array */ static protected $appConfigs = array(); /** * * 当前app的配置 * @var array */ protected $appConfig; /** * * 不允许直接 new */ private function __construct() { } /** * * 载入配置,如果成功,返回instance * @param string $app_conf_path 配置文件的路径 * @return KIF\Core\Config */ static public function load($app_conf_path) { $app_conf_path = realpath($app_conf_path); $app_conf_key = md5($app_conf_path); if (!isset(self::$appConfigs[$app_conf_key])) { $config = include($app_conf_path); if (!is_array($config)) { throw new Exception("load app_conf_path fail: {$app_conf_path}"); } # 将conf的path存进来 $config['conf_path'] = $app_conf_path; self::$appConfigs[$app_conf_key] = $config; } if (is_null(self::$instance)) { self::$instance = new self(); } self::$instance->appConfig = self::$appConfigs[$app_conf_key]; return self::$instance; } /** * * 单例模式 * @param string $app_conf_path * @return KIF\Core\Config */ static public function getInstance() { if (is_null(self::$instance)) { self::$instance = new self(); } if (is_null(self::$instance->appConfig)) { throw new Exception('instance appconfig is null, pleace run KIF\Core\Config::load !'); } return self::$instance; } /** * * 获取指定配置项的值 * @param string $key * @return mixed */ public function get($key) { if (empty($key)) { return false; } $keys = explode('.', $key); $value = $this->appConfig; foreach ($keys as $tmpKey) { if (!isset($value[$tmpKey])) { return false; } $value = $value[$tmpKey]; } return $value; } /** * * 指定配置项是否设置了 * @param string $key * @return boolean */ public function exists($key) { return isset($this->appConfig[$key]); } /** * * 获取当前的配置信息 * @return array */ public function current() { return $this->appConfig; } /** * * 获取所有app的配置集 * @return array */ static public function all() { return self::$appConfigs; } }