配置基础
惯例配置->应用配置->模块配置->动态配置
惯例配置 核心框架内置的配置文件 无需更改
应用配置 每个应用的全局配置文件 部分配置参数仅能在应用配置文件中设置
模块配置 每个模块的配置文件(相同参数会覆盖应用配置) 部分配置参数模块配置是无效的 因为已经使用过
动态配置 在控制器或行为中进行(动态)更改配置 该配置方式只在当次请求有效 不会保存到配置文件中
没有指定一级配置名时 默认以
app
作为一级配置 一级配置名称就是所在的配置文件名
配置文件和目录
应用配置包括应用配置和模块配置
├─config(应用配置目录) │ ├─app.php 应用配置 │ ├─cache.php 缓存配置 │ ├─cookie.php Cookie配置 │ ├─database.php 数据库配置 │ ├─log.php 日志配置 │ ├─session.php Session配置 │ ├─template.php 模板引擎配置 │ ├─trace.php Trace配置 │ └─ ... 更多配置文件 │ ├─route(路由目录) │ ├─route.php 路由定义文件 │ └─ ... 更多路由定义文件 │ ├─application (应用目录) │ └─module (模块目录) │ └─config(模块配置目录) │ ├─app.php 应用配置 │ ├─cache.php 缓存配置 │ ├─cookie.php Cookie配置 │ ├─database.php 数据库配置 │ ├─log.php 日志配置 │ ├─session.php Session配置 │ ├─template.php 模板引擎配置 │ ├─trace.php Trace配置 │ └─ ... 更多配置文件 │
目录结构是只是列出系统内置的配置文件 可以自定义配置文件 配置文件的名称就是一级配置名
应用和模块的配置目录对应关系
配置 | 目录 |
---|---|
应用配置目录 | config |
模块配置目录 | application/module/config |
如果需要统一管理所有的配置文件 把模块目录下面的config
目录移动到应用配置目录下面改为模块子目录的方式 调整后的配置目录的结构
├─application(应用目录) ├─config(配置目录) │ ├─module (模块配置目录) │ │ ├─database.php 数据库配置 │ │ ├─cache 缓存配置 │ │ └─ ... │ │ │ ├─app.php 应用配置 │ ├─cache.php 缓存配置 │ ├─cookie.php Cookie配置 │ ├─database.php 数据库配置 │ ├─log.php 日志配置 │ ├─session.php Session配置 │ ├─template.php 模板引擎配置 │ └─trace.php Trace配置 │ ├─route(路由配置目录) │ ├─route.php 路由定义文件 │ └─ ... 更多路由定义文件
模块目录下存在
config
目录 则应用配置目录下的模块配置则无效 不会对两个目录的配置进行合并
配置目录对应关系
配置 | 目录 |
---|---|
应用配置目录 | config |
模块配置目录 | config/module |
每个配置文件中都有详细的配置参数说明
配置定义
应用或模块配置文件中修改或增加配置参数 如果要增加额外的配置文件 放入应用或模块配置目录(文件名小写)
除了一级配置外 配置参数名严格区分大小写 使用小写定义配置参数的规范
配置参数的定义有效性 下列配置参数 必须在应用配置中设置
配置参数 | 描述 |
---|---|
app_debug | 应用调试模式(支持环境变量配置) |
app_trace | 应用trace(支持环境变量配置) |
class_suffix | 类后缀 |
default_filter | 默认过滤机制 |
root_namespace | 根命名空间 |
pathinfo_depr | PATH_INFO分隔符 |
url_route_must | 路由强制模式 |
auto_bind_module | 自动绑定模块 |
default_lang | 默认语言 |
lang_switch_on | 多语言切换 |
由于架构设计原因 下面的配置只能在环境变量中修改
配置参数 | 描述 |
---|---|
app_namespace | 应用命名空间 |
config_ext | 配置文件后缀 |
其它配置格式支持
默认的配置文件是PHP数组方式
使用其它格式的配置文件 通过改变CONFIG_EXT
环境变量的方式来更改配置类型
应用根目录的.env
或系统环境变量中设置
CONFIG_EXT=".ini"
支持的配置类型 .ini
、.xml
、.json
、.yaml
和 .php
在内的格式支持 配置后应用配置及模块配置必须统一使用相同的配置类型
二级配置
配置参数的值同样支持数组
return ['user' => ['type' => 1,'name' => 'thinkphp', ],'db' => ['type' => 'mysql','user' => 'root','password' => '', ], ];
环境变量定义
在应用的根目录下定义个特殊的.env
环境变量文件 用于在开发过程中模拟环境变量配置(该文件建议在服务器部署的时候忽略).env
文件中的配置参数定义格式采用ini
方式
APP_DEBUG = true APP_TRACE = true
如果部署环境单独配置了环境变量( 环境变量的前缀使用
PHP_
) 那么删除.env
配置文件 避免冲突
环境变量配置的参数会全部转换为大写 值为 null
no
和 false
等效于 ""
值为 yes
和 true
等效于 "1"
环境变量不支持数组参数 如果需要使用数组参数可以 使用下划线分割定义配置参数名
DATABASE_USERNAME = rootDATABASE_PASSWORD = 123456
获取环境变量的值
Env::get('database_username'); Env::get('database_password');
如果使用
[DATABASE]USERNAME = rootPASSWORD = 123456
获取环境变量的值
Env::get('database.username'); Env::get('database.password');
用Env
类 必须先引入thinkfacadeEnv
或Env
环境变量的获取不区分大小写
支持默认值
// 获取环境变量 如果不存在则使用默认值rootEnv::get('database.username','root');
可直接在配置文件中 用环境变量进行本地环境和服务器的自动配置
return ['hostname' => Env::get('hostname','127.0.0.1'), ];
环境变量中设置的
APP_DEBUG
和APP_TRACE
参数会自动生效(优先于应用的配置文件) 其它参数则必须通过Env::get
方法才能读取
配置获取
用Config
类 首先需要在你的类文件中引入
use thinkfacadeConfig;
或(因为系统做了类库别名 其实就是调用thinkfacadeConfig
)
use Config;
就可以使用下面的方法读取某个配置参数的值:
echo Config::get('配置参数1');
读取某个一级配置的所有配置参数
Config::pull('app');
或
Config::get('app.');
读取所有的配置参数
dump(Config::get());
判断是否存在某个设置参数
Config::has('配置参数2');
助手函数
助手函数config
简化 echo config('配置参数1');
配置参数采用二级配置的方式(默认一级配置为app) 用config('name')
的时候其实相当于使用
config('app.name')
支持获取多级配置参数值 直接使用(必须从一级开始写)
config('app.name1.name2')
获取某个一级配置的所有参数
config('app.');
读取所有的配置参数
dump(config());
判断是否存在某个设置参数
config('?配置参数2');
动态设置
控制器或行为里面 用set
方法或助手函数动态设置参数(不过需要注意的是 动态设置生效的前提是该参数尚未被使用)
Config::set('配置文件名.配置参数','配置值');//用助手函数config('配置文件名.配置参数','配置值');
动态设置的参数 最多支持二级
Config::set('app_trace', true);//没有指定配置文件名的话等效于下面的方式Config::set('app.app_trace', true);// 助手函数的方式config('app_trace', true);
可传入数组批量设置 并在第二个参数传入一级配置名
Config::set(['app_trace'=>true,'show_error_msg'=>true], 'app');// 或使用助手函数config(['app_trace'=>true,'show_error_msg'=>true],'app');
系统配置文件
系统自带的配置文件列表及其作用(配置文件可能同时存在应用配置文件和模块配置文件两个同名文件):
配置文件名 | 描述 |
---|---|
app.php | 应用配置 |
cache.php | 缓存配置 |
cookie.php | Cookie配置 |
database.php | 数据库配置 |
log.php | 日志配置 |
session.php | Session配置 |
template.php | 模板引擎配置 |
trace.php | 页面Trace配置 |
paginate.php | 分页配置 |
具体的配置参数可以直接查看
应用config
目录下面的相关文件内容。
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题