thinkphp5——配置

本文深入讲解ThinkPHP框架的配置管理,包括配置目录结构、配置加载流程、动态设置与读取方法、自定义配置文件及配置作用域等内容,帮助开发者更好地理解和运用框架配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 配置目录

├─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()  重置配置参数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值