一 配置目录
├─application 应用目录
│ │
│ ├─config.php 应用配置文件
│ │
│ ├─database.php 数据库配置文件
│ │
│ ├─route.php 路由配置文件
│ │
│ ├─index index模块配置文件目录
│ │ │
│ │ ├─config.php index模块配置文件
│ │ │
│ │ └─database.php index模块数据库配置文件
如果不希望配置文件放到应用目录下面,可以在入口文件中定义独立的配置目录,添加CONF_PATH常量定义即可,例如:
定义配置文件目录和应用目录同级
define('CONF_PATH'__DIR__.'/../config/');
├─application 应用目录
│
├─config 配置目录
│ │
│ ├─config.php 应用配置文件
│ │
│ ├─database.php 数据库配置文件
│ │
│ ├─route.php 路由配置文件
│ │
│ ├─index index模块配置文件目录
│ │ │
│ │ ├─config.php index模块配置文件
│ │ │
│ │ └─database.php index模块数据库配置文件
二 配置加载
在ThinkPHP中,一般来说应用的配置文件是自动加载的,加载的顺序是:
惯例配置->应用配置->扩展配置->场景配置->模块配置->动态配置
惯例配置
框架内置有一个惯例配置文件(位于thinkphp/convention.php
),按照大多数的使用对常用参数进行了默认配置。所以,对于应用的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件。
应用配置
应用配置文件是应用初始化的时候首先加载的公共配置文件,默认位于application/config.php
。
扩展配置
扩展配置文件直接放入application/extra
目录会自动加载。
场景配置
每个应用都可以在不同的情况下设置自己的状态(或者称之为应用场景),并且加载不同的配置文件。
'app_status'=>'office'
那么就会自动加载该状态对应的配置文件(默认位于application/office.php
),可以使用 Config 类 动态切换
模块配置
每个模块会自动加载自己的配置文件(位于application/当前模块名/config.php
)。
模块还可以支持独立的状态配置文件,命名规范为:application/当前模块名/应用状态.php
。
三 动态设置与读取
使用 think\Config 类(use think\Config)或者 config助手函数
1 动态设置
Config::set('配置参数','配置值');
// 或者使用助手函数
config('配置参数','配置值');
也可以批量设置,例如:
Config::set([
'配置参数1'=>'配置值',
'配置参数2'=>'配置值']
);
// 或者使用助手函数
config([
'配置参数1'=>'配置值',
'配置参数2'=>'配置值']
);
2 动态读取
echo Config::get('配置参数');
//使用助手函数
echo config('配置参数');
读取所有的配置参数:
dump(Config::get());
// 或者 dump(config());
如果需要读取二级配置,可以使用:
echo Config::get('配置参数.二级参数');
echo config('配置参数.二级参数');
3 判断是否存在某个设置参数
Config::has('配置参数2');
// 或者 config('?配置参数2');
四 自定义配置文件
如果以上配置方式都无法满足要求,可以在application目录下创建目录或文件,在指定控制器或模型下使用load()方法引入,当然 load也支持引入原有的
配置文件
Config::load(APP_PATH.'config/config.php');
如果配置文件的格式不是php,是其它格式,要采用parse()方法来导入
Config::parse(APP_PATH.'config/config.ini','ini');
Config::parse(APP_PATH.'config/config.json','json');
Config::parse(APP_PATH.'config/config.xml','xml');
PS : 各种配置格式
ini格式配置示例:
default_module=Index ;默认模块
default_controller=index ;默认控制器
default_action=index ;默认操作
xml格式配置示例:
<config>
<default_module>Index</default_module>
<default_controller>index</default_controller>
<default_action>index</default_action>
</config>
json格式配置示例:
{
"default_module":"Index",
"default_controller":"index",
"default_action":"index"
}
五 配置作用域
配置参数支持作用域的概念,默认情况下,所有参数都在同一个系统默认作用域下面。如果你的配置参数需要用于不同的项目或者相互隔离,那么就可以使用作用域功能,作用域的作用好比是配置参数的命名空间一样。(感觉用处不大)
// 导入my_config.php中的配置参数,并纳入user作用域
Config::load('my_config.php','','user');
// 解析并导入my_config.ini 中的配置参数,读入test作用域
Config::parse('my_config.ini','ini','test');
// 设置user_type参数,并纳入user作用域
Config::set('user_type',1,'user');
// 批量设置配置参数,并纳入test作用域
Config::set($config,'test');
// 读取user作用域的user_type配置参数
echo Config::get('user_type','user');
// 读取user作用域下面的所有配置参数
dump(Config::get('','user'));
dump(config('',null,'user'));
// 同上// 判断在test作用域下面是否存在user_type参数
Config::has('user_type','test');
六 总结
Config类的7个方法:
range() 设定配置参数的作用域
parse() 解析配置文件或内容
load() 加载配置文件
has() 检测配置参数是否存在
get() 获取配置参数
set() 设置配置参数
reset() 重置配置参数