| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | <?phpnamespace KIF\Core;use Exception;/** *  * 配置类。作用: * 1、作为框架需要配置参数的那些类(如KIF\Cache、KIF\Dao 里的类)的参数获取接口。 * 2、为KIF框架下的不同APP间 php in-process calls (APP间PHP进程内调用) 提供核心支持 *  * @author gaoxiaogang@gmail.com * */class Config {		static private $instance;		/**	 * 所有app的配置集	 * array(	 * 		md5($app_conf_path) => 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;	}}
 |