4.1 为什么需要配置文件
通常在框架当中很多的固定的参数,初始化参数,并不是我们直接在使用时添加,一些通用的参数,需要固定的位置存放,然后调用时到固定的地方获取,而不是重复的定义
4.2 有哪些配置文件
惯例配置:核心框架内置的配置文件,无需更改。
应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。
模块配置:每个模块的配置文件(相同的配置参数会覆盖应用配置),有部分配置参数模块配置是无效的,因为已经使用过。
动态配置:主要是指在控制器或者行为中进行(动态)更改配置,该配置方式只在当次请求有效,因为不会保存到配置文件中。
4.3 配置文件在哪
Thinkphp惯例配置存放在thinkphp/convention当中,所谓的惯例配置就是thinkphp根据一些用户惯用的配置去写的配置项
惯例配置:核心框架内置的配置文件
应用配置:每个应用的全局配置文件
模块配置:每个模块的配置文件
动态配置:(代码当中修改)主要是指在控制器或者行为中进行(动态)更改配置,该配置方式只在当次请求有效,因为不会保存到配置文件中。
4.4 系统配置文件说明
4.5 配置的格式
可以直接在相应的应用或模块配置文件中修改或者增加配置参数,如果你要增加额外的配置文件,直接放入应用或模块配置目录即可(文件名小写)。
4.5.1 数组定义
返回PHP数组的方式是默认的配置定义格式,例如:
return [
// 默认模块名
'default_module' => 'index',
// 禁止访问模块
'deny_module_list' => ['common'],
// 默认控制器名
'default_controller' => 'Index',
// 默认操作名
'default_action' => 'index'
];
配置参数名请使用小写的形式,定义多级
'info'=>[
'name'=>'peter',
'age'=>'18'
]
4.5.2 其他配置格式支持
默认的配置文件都是PHP数组方式,如果你需要使用其它格式的配置文件,你可以通过改变CONFIG_EXT环境变量的方式来更改配置类型。
支持的配置类型包括.ini、.xml、.json 、.yaml和 .php 在内的格式支持,配置后应用配置及模块配置必须统一使用相同的配置类型。(了解,一般创建一种类型就可以)
4.5.3 创建一个.env格式的文件,在项目根目录
在框架应用加载的过程当中,会首先加载.env格式的配置,会去读取相关的配置信息(查看源码)
Ini格式的
4.5.4 环境变量配置和使用
我们通过学习Thinkphp5环境变量的配置,来搭建出符合我们平时开发中使用的运营环境,比如说开发环境,上线环境使用的配置是不一样的。
注意,环境变量不支持数组参数,如果需要使用数组参数可以,使用下划线分割定义配置参数
4.5.5 获取环境变量的值可以使用下面的两种方式获取:
Env::get('database.username');
Env::get('database.password');
// 同时下面的方式也可以获取
Env::get('database_username');
Env::get('database_password');
/ 获取环境变量 如果不存在则使用默认值root
Env::get('database.username','root');
注意:环境变量当中的结果是大写的,但是获取的时候使用小写
4.6 配置有效性
并不是所有的配置都会有效果,某些配置在特定的文件目录下才会有效果
下列配置参数在模块配置中定义(包括动态配置)无效,而必须在应用配置中设置
由于架构设计原因,下面的配置只能在环境变量中修改。
4.7 配置获取
4.7.1 使用Config类获取
引入命名空间
use think\facade\Config;
读取配置信息
echo Config::get('配置参数1');
读取某个一级配置的所有配置参数
Config::get('app.');
判断是否存在某个设置参数:
Config::has('配置参数2');
4.7.2 使用助手函数获取
echo config('配置参数1');
支持获取多级配置参数值,直接使用(必须从一级开始写)
config('app.name1.name2')
4.8 动态设置
使用助手函数设置,只能在当前的请求当中有作用
config('配置文件名.配置参数','配置值');
动态设置的参数,最多支持二级
config([
'title'=>'peter的网站',
'info'=>'简介信息'
],'app');
4.9 配置的优先级
ThinkPHP遵循惯例重于配置的原则,系统会按照下面的顺序来加载配置文件(配置的优先顺序从右到左)。
会覆盖掉之前的配置
4.10 配置文件加载原理解析(了解)
通过分析thinkphp5.1的源码了解下框架的配置文件,是什么时候读取到的,为什么我们能在框架当中读取配置文件当中的内容,以及配置的优先级顺序
start.php当中加载惯例配置
执行run方法
执行initialize
加载环境变量配置
加载应用配置以及模块配置