增加配置文件驱动接口,以便用户在遵循接口的前提下定义并使用自己的驱动,例如 YAML

This commit is contained in:
dongww
2015-12-16 18:36:01 +08:00
parent c3d1b63635
commit 093023cf13
4 changed files with 46 additions and 8 deletions

View File

@@ -11,6 +11,9 @@
namespace think;
use think\config\driver\DriverInterface;
use think\config\driver\Ini;
class Config
{
// 配置参数
@@ -27,15 +30,21 @@ class Config
}
}
// 解析其他格式的配置参数
public static function parse($config, $type = '', $range = '')
/**
* 解析配置文件或内容
*
* @param string $config 配置文件路径或内容
* @param string $range 作用域
* @param DriverInterface|null $driver 配置解析驱动
*/
public static function parse($config, $range = '', DriverInterface $driver = null)
{
if (empty($type)) {
$type = substr(strrchr($config, '.'), 1);
if ($driver === null) {
$driver = new Ini();
}
$range = $range ? $range : self::$range;
$class = '\\think\\config\\driver\\' . strtolower($type);
self::set((new $class())->parse($config), '', $range);
self::set($driver->parse($config), '', $range);
}
// 加载配置文件