diff --git a/Think/Config.php b/Think/Config.php index 8f3b3ded..e4573cbb 100644 --- a/Think/Config.php +++ b/Think/Config.php @@ -18,6 +18,16 @@ class Config { self::$_range = $range; } + // 解析其他格式的配置参数 + static public function parse($config,$type,$range=''){ + $class = '\Think\Config\Driver\\'.ucwords($type); + if(class_exists($class)) { + self::set((new $class())->parse($config),'',$range); + }else{ + throw_exception('class not exists: ' . $class); + } + } + // 加载配置文件 static public function load($file,$range=''){ return self::set(include $file,'',$range); diff --git a/Think/Config/Driver/Ini.php b/Think/Config/Driver/Ini.php new file mode 100644 index 00000000..32e3c20a --- /dev/null +++ b/Think/Config/Driver/Ini.php @@ -0,0 +1,22 @@ + +// +---------------------------------------------------------------------- +// $Id$ + +namespace Think\Config\Driver; +class Ini { + public function parse($config){ + if(is_file($config)) { + return parse_ini_file($config,true); + }else{ + return parse_ini_string($config,true); + } + } +} \ No newline at end of file diff --git a/Think/Config/Driver/Xml.php b/Think/Config/Driver/Xml.php new file mode 100644 index 00000000..37377898 --- /dev/null +++ b/Think/Config/Driver/Xml.php @@ -0,0 +1,29 @@ + +// +---------------------------------------------------------------------- +// $Id$ + +namespace Think\Config\Driver; +class Xml { + public function parse($config){ + if(is_file($config)) { + $content = simplexml_load_file($config); + }else{ + $content = simplexml_load_string($config); + } + $result = (array)$content; + foreach($result as $key=>$val){ + if(is_object($val)) { + $result[$key] = (array)$val; + } + } + return $result; + } +} \ No newline at end of file