配置基础

惯例配置->应用配置->模块配置->动态配置

  • 惯例配置 核心框架内置的配置文件 无需更改

  • 应用配置 每个应用的全局配置文件  部分配置参数仅能在应用配置文件中设置

  • 模块配置 每个模块的配置文件(相同参数会覆盖应用配置) 部分配置参数模块配置是无效的 因为已经使用过

  • 动态配置 在控制器或行为中进行(动态)更改配置 该配置方式只在当次请求有效  不会保存到配置文件中

没有指定一级配置名时 默认以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_deprPATH_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 nofalse 等效于 "" 值为 yestrue 等效于 "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类 必须先引入thinkfacadeEnvEnv

环境变量的获取不区分大小写

支持默认值

// 获取环境变量 如果不存在则使用默认值rootEnv::get('database.username','root');

可直接在配置文件中 用环境变量进行本地环境和服务器的自动配置

return ['hostname'  =>  Env::get('hostname','127.0.0.1'),
];

环境变量中设置的APP_DEBUGAPP_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.phpCookie配置
database.php数据库配置
log.php日志配置
session.phpSession配置
template.php模板引擎配置
trace.php页面Trace配置
paginate.php分页配置

具体的配置参数可以直接查看
应用config目录下面的相关文件内容。