//框架类Config.php类配置文件. 2个私有属性和7个方法 /** * 配置类 */ class Config { coding; } //2个静态私有属性变量 //配置参数 初始值默认为空数组 提供内部访问:self::静态成员 参数只接受数组类型值 private static $config = []; //配置参数作用域 提供内部访问:self::静态成员 参数只接受字符串类型的值 private static $range = 'sys'; //7个方法 /** * 设定配置参数的作用域 公有静态方法 外部访问: Config::静态成员 * @param string $range 参数作用域 */ public static function range($range) { //内部静态成员获取值 self::$range = $range; if(!isset(self::$config[$range])) { self::$config[$range] = []; } } /** * 解析配置文件或内容 公有静态方法 外部访问: * @param string $config 配置文件路径或内容 * @param string $type 配置解析类型 * @param string $name 配置名(如设置即表示二级配置) * @param string $range 作用域 * @return mixed */ public static function parse($config, $type='', $name='', $range='') { $range = $range ?: self::$range; if (empty($type)) { $type = pathinfo($config, PATHINFO_EXTENSION); } $class = false !==strpos($type, '\\') ? $type : '\\think\\config\\driver\\'. ucwords($type); return self::set((new $class())->parse($config), $name, $range); } /** * 加载配置文件(PHP格式) * @param string $file 配置文件名 * @param string $name 配置名(如设置即表示二级配置) * @param string $range 作用域 * @return mixed */ public static function load($file, $name='', $range='') { $range = $range ?: self::$range; if(!isset(self::$config[$range])) { self::$config[$range] = []; } if(is_file($file)) { $name = strtolower($name); $type = pathinfo($file, PATHINFO_EXTENSION); if('php'== $type) { return self::set(include $file, $name, $range); }elseif ('yaml'==$type && function_exists('yaml_parse_file')) { return self::set(yaml_prase_file($file), $name, $range); }else { return self::parse($file, $type, $name, $range); } }else { return self::$config[$range]; } } /** * 检测配置是否存在 * @param string $name 配置参数名(支持二级配置 .号分割) * @param string $range 作用域 * @return bool */ public static function has($name, $range ='') { $range = $range ?: self::$range; if(!strpos($name, '.')) { return isset(self::$config[$range][strtolower($name)]); }else { //二维数组设置和获取支持 $name = explode('.', $name, 2); return isset(self::$config[$range][strtolower($name[0])][$name[1]]); } } /** * 获取配置参数 为空则获取所有配置 * @param string $name 配置参数名(支持二级配置 .号分割) * @param string $range 作用域 * @return mixed */ public static function get($name = null, $range = '') { $range = $range ?: self::$range; //无参数是获取所有 if(empty($name) && isset(self::$config[$range])) { return self::$config[$range]; } if(!strpost($name, '.')) { $name = strtolower($name); return isset(self::$config[$range][$name]) ? self::$config[$range][$name]: null; } else { //二维数组设置和获取支持 $name = explode('.', $name, 2); $name[0] = strtolower($name[0]); return isset(self::$config[$range][$name[0]][$name[1]]) ? self::$config[$range][$name[0]][$name[1]] : null; } }