tp5.1--配置

配置定义

可以直接在相应的应用或模块配置文件中修改或者增加配置参数,如果你要增加额外的配置文件,直接放入应用或模块配置目录即可(文件名小写)。

除了一级配置外,配置参数名严格区分大小写,建议是使用小写定义配置参数的规范。

另外涉及到配置参数的定义有效性问题,下列配置参数在模块配置中定义(包括动态配置)无效,而必须在应用配置中设置

配置参数描述
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配置文件,避免冲突。

环境变量配置的参数会全部转换为大写,值为 nullnofalse 等效于 "",值为 yestrue 等效于 "1"

注意,环境变量不支持数组参数,如果需要使用数组参数可以,使用下划线分割定义配置参数名:

DATABASE_USERNAME =  root
DATABASE_PASSWORD =  123456

获取环境变量的值使用下面的方式:

Env::get('database_username');
Env::get('database_password');

如果使用

[DATABASE]
USERNAME =  root
PASSWORD =  123456

获取环境变量的值可以使用下面的方式获取:

Env::get('database.username');
Env::get('database.password');

要使用Env类,必须先引入think\facade\Env或者\Env

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

可以支持默认值,例如:

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

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

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

环境变量中设置的APP_DEBUGAPP_TRACE参数会自动生效(优先于应用的配置文件),其它参数则必须通过Env::get方法才能读取。

配置获取

要使用Config类,首先需要在你的类文件中引入

use think\facade\Config;

或者(因为系统做了类库别名,其实就是调用think\facade\Config

use Config;

然后就可以使用下面的方法读取某个配置参数的值:

echo Config::get('配置参数1');

如果你需要读取某个一级配置的所有配置参数,可以使用

Config::pull('app');

或者使用

Config::get('app.');

读取所有的配置参数:

dump(Config::get());

判断是否存在某个设置参数:

Config::has('配置参数2');

助手函数

系统定义了一个助手函数config,以上可以简化为:

echo config('配置参数1');

5.1的配置参数全部采用二级配置的方式(默认一级配置为app),所以当你使用config('name')的时候其实相当于使用:

config('app.name')

支持获取多级配置参数值,直接使用(必须从一级开始写)

config('app.name1.name2')

获取某个一级配置的所有参数可以使用

config('app.');

读取所有的配置参数:

dump(config());

或者你需要判断是否存在某个设置参数:

config('?配置参数2');

动态设置(慎用)

V5.1.18+版本以上,不再建议使用动态配置,由于容器的特性,可能不会生效。

在控制器或者行为里面可以使用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目录下面的相关文件内容。

使用Yaconf定义(V5.1.22+

V5.1.22+版本开始(并且要求PHP7+),可以支持使用Yaconf统一定义配置,但不支持动态设置。

V5.1.23+版本开始,可以使用setYaconf方法指定Yaconf使用的独立配置文件,例如:

// 建议在应用的公共函数文件中进行设置
think\facade\Config::setYaconf('thinkphp');

设置后,你只需要在thinkphp.ini一个文件进行项目的配置,而无需分开多个文件,避免和其它项目冲突。

同时,你还可以在配置文件中,使用yaconf助手函数(用法类似env函数)

return [
	'config_name'	=>	yaconf('config_name', 'default_value'),
];

setYaconf方法的设置对yaconf助手函数依然有效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值