Think\Config类增加parse方法 支持其他格式的配置文件解析导入

This commit is contained in:
thinkphp
2013-03-29 21:53:28 +08:00
parent b16067caf3
commit d58c1aa106
3 changed files with 61 additions and 0 deletions

View File

@@ -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);

View File

@@ -0,0 +1,22 @@
<?php
// +----------------------------------------------------------------------
// | TOPThink [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://topthink.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $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);
}
}
}

View File

@@ -0,0 +1,29 @@
<?php
// +----------------------------------------------------------------------
// | TOPThink [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://topthink.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $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;
}
}