tp5 config.php,tp5开发手册阅读笔记 - Config.php详解

本文详细介绍了Config类在框架中的使用,包括配置参数的作用域、解析配置文件的方法、加载配置文件的功能以及检查和获取配置参数的实现。Config类通过静态方法提供了灵活的配置操作,支持多种配置文件格式,并允许进行二级配置的设置和获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//框架类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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值