多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 概述 配置的加载、设置和获取功能统一由\think\Config类完成。 ## 使用 ### 加载配置文件 ~~~ \think\Config::load('配置文件名'); ~~~ 配置文件一般位于`APP_PATH`目录下面,如果需要加载其它位置的配置文件,需要使用完整路径,例如: ~~~ \think\Config::load(APP_PATH.'config/config.php'); ~~~ 系统默认的配置定义格式是PHP返回数组的方式,例如: ~~~ return [ '配置参数1'=>'配置值', '配置参数1'=>'配置值', // ... 更多配置 ]; ~~~ 如果你定义格式是其他格式的话,可以使用parse方法来导入,例如: ~~~ \think\Config::parse(APP_PATH.'my_config.ini','ini'); \think\Config::parse(APP_PATH.'my_config.xml','xml'); ~~~ parse方法的第一个参数需要传入完整的文件名或者配置内容。 如果不传入第二个参数的话,系统会根据配置文件名自动识别配置类型,所以下面的写法仍然是支持的: ~~~ \think\Config::parse('my_config.ini'); ~~~ parse方法除了支持读取配置文件外,也支持直接传入配置内容,例如: ~~~ $config = 'var1=val var2=val'; \think\Config::parse($config,'ini'); ~~~ 支持传入配置文件内容的时候 第二个参数必须显式指定。 标准的ini格式文件定义: ~~~ 配置参数1=配置值 配置参数2=配置值 ~~~ 标准的xml格式文件定义: ~~~ <config> <var1>val1</var1> <var2>val2</var2> </config> ~~~ 配置类采用驱动方式支持各种不同的配置文件类型,因此可以根据需要随意扩展。 ### 设置配置参数 使用set方法动态设置参数,例如: ~~~ \think\Config::set('配置参数','配置值'); // 或者使用快捷方法 C('配置参数','配置值'); ~~~ 也可以批量设置,例如: ~~~ \think\Config::set(['配置参数1'=>'配置值','配置参数2'=>'配置值']); // 或者使用 C(['配置参数1'=>'配置值','配置参数2'=>'配置值']); ~~~ ## 二级配置 配置参数支持二级,例如,下面是一个二级配置的设置和读取示例: ~~~ $config = [ 'user'=>['type'=>1,'name'=>'thinkphp'], 'db' =>['type'=>'mysql','user'=>'root','password'=>''], ]; // 设置配置参数 \think\Config::set($config); // 读取二级配置参数 echo \think\Config::get('user.type'); // 或者 echo C('user.type'); ~~~ 系统不支持二级以上的配置参数读取,需要手动分步骤读取。 有作用域的情况下,仍然支持二级配置的操作。 如果采用其他格式的配置文件的话,二级配置定义方式如下(以ini和xml为例): ~~~ [user] type=1 name=thinkphp [db] type=mysql user=rot password='' ~~~ 标准的xml格式文件定义: ~~~ <config> <user> <type>1</type> <name>thinkphp</name> </user> <db> <type>mysql</type> <user>root</user> <password></password> </db> </config> ~~~ set方法也支持二级配置,例如: ~~~ \think\Config::set(['type'=>'file','prefix'=>'think'],'cache'); ~~~ ### 独立配置文件 新版支持配置文件分离,只需要配置`extra_config_list`参数(在应用公共配置文件中)。 例如,不使用独立配置文件的话,数据库配置信息应该是在config.php中配置如下: ~~~ /* 数据库设置 */ 'database' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'thinkphp', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库连接端口 'hostport' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => false, ], ~~~ 如果需要使用独立配置文件的话,则首先在config.php中添加配置: ~~~ 'extra_config_list' => ['database'], ~~~ 定义之后,数据库配置就可以独立使用`database.php`文件,配置内容如下: ~~~ /* 数据库设置 */ return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'thinkphp', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库连接端口 'hostport' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => false, ], ~~~ 如果配置了`extra_config_list`参数,并同时在`config.php`和`database.php`文件中都配置的话,则`database.php`文件的配置会覆盖`config.php`中的设置。 > 系统默认设置了两个独立配置文件,包括`database`和`route`。 ### 读取配置参数 设置完配置参数后,就可以使用get方法读取配置了,例如: ~~~ echo \think\Config::get('配置参数1'); ~~~ 系统为get方法定义了一个快捷函数C,以上可以简化为: ~~~ echo C('配置参数1'); ~~~ 读取所有的配置参数: ~~~ dump(\think\Config::get()); // 或者 dump(C()); ~~~ 或者你需要判断是否存在某个设置参数: ~~~ \think\Config::has('配置参数2'); ~~~ ## 作用域 配置参数支持作用域的概念,默认情况下,所有参数都在同一个系统默认作用域下面。如果你的配置参数需要用于不同的项目或者相互隔离,那么就可以使用作用域功能,作用域的作用好比是配置参数的命名空间一样。 ~~~ \think\Config::load('my_config.php','','user'); // 导入my_config.php中的配置参数,并纳入user作用域 \think\Config::parse('my_config.ini','ini','test'); // 解析并导入my_config.ini 中的配置参数,读入test作用域 \think\Config::set('user_type',1,'user'); // 设置user_type参数,并纳入user作用域 \think\Config::set($config,'test'); // 批量设置配置参数,并纳入test作用域 echo \Think\Config::get('user_type','user'); // 读取user作用域的user_type配置参数 dump(\Think\Config::get('','user')); // 读取user作用域下面的所有配置参数 dump(C('',null,'user')); // 同上 \think\Config::has('user_type','test'); // 判断在test作用域下面是否存在user_type参数 ~~~