From d58c1aa106bab4f18dad016de4dca3e6b235876a Mon Sep 17 00:00:00 2001 From: thinkphp Date: Fri, 29 Mar 2013 21:53:28 +0800 Subject: [PATCH] =?UTF-8?q?Think\Config=E7=B1=BB=E5=A2=9E=E5=8A=A0parse?= =?UTF-8?q?=E6=96=B9=E6=B3=95=20=E6=94=AF=E6=8C=81=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E7=9A=84=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Think/Config.php | 10 ++++++++++ Think/Config/Driver/Ini.php | 22 ++++++++++++++++++++++ Think/Config/Driver/Xml.php | 29 +++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 Think/Config/Driver/Ini.php create mode 100644 Think/Config/Driver/Xml.php 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