Thinkphp 框架配置操作之配置加载与读取配置实例分析


Posted in PHP onMay 15, 2020

本文实例讲述了Thinkphp 框架配置操作之配置加载与读取配置。分享给大家供大家参考,具体如下:

配置加载

在ThinkPHP中,一般来说应用的配置文件是自动加载的,加载的顺序是:

惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置

以上是配置文件的加载顺序,因为后面的配置会覆盖之前的同名配置(在没有生效的前提下),所以配置的优先顺序从右到左。

不同的配置文件的区别和位置:

惯例配置

惯例重于配置是系统遵循的一个重要思想,框架内置有一个惯例配置文件(位于ThinkPHP/Conf/convention.php),按照大多数的使用对常用参数进行了默认配置。所以,对于应用的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件

应用配置

应用配置文件也就是调用所有模块之前都会首先加载的公共配置文件(默认位于Application/Common/Conf/config.php)。

如果更改了公共模块的名称的话,公共配置文件的位置也相应改变

模式配置(可选)

如果使用了普通应用模式之外的应用模式的话,还可以为应用模式(后面会有描述)单独定义配置文件,文件命名规范是: Application/Common/Conf/config_应用模式名称.php(仅在运行该模式下面才会加载)。

模式配置文件是可选的

调试配置(可选)

如果开启调试模式的话,则会自动加载框架的调试配置文件(位于ThinkPHP/Conf/debug.php)和应用调试配置文件(位于Application/Common/Conf/debug.php

状态配置(可选)

每个应用都可以在不同的情况下设置自己的状态(或者称之为应用场景),并且加载不同的配置文件。

举个例子,你需要在公司和家里分别设置不同的数据库测试环境。那么可以这样处理,在公司环境中,我们在入口文件中定义:

define('APP_STATUS','office');

那么就会自动加载该状态对应的配置文件(位于Application/Common/Conf/office.php)。

如果我们回家后,我们修改定义为:

define('APP_STATUS','home');

那么就会自动加载该状态对应的配置文件(位于Application/Common/Conf/home.php)。

状态配置文件是可选的

模块配置

每个模块会自动加载自己的配置文件(位于Application/当前模块名/Conf/config.php)。

如果使用了普通模式之外的其他应用模式,你还可以为应用模式单独定义配置文件,命名规范为: Application/当前模块名/Conf/config_应用模式名称.php(仅在运行该模式下面才会加载)。

模块还可以支持独立的状态配置文件,命名规范为: Application/当前模块名/Conf/应用状态.php

读取配置

无论何种配置文件,定义了配置文件之后,都统一使用系统提供的C方法(可以借助Config单词来帮助记忆)来读取已有的配置。

用法:

C('参数名称')

例如,读取当前的URL模式配置参数:

$model = C('URL_MODEL');
// 由于配置参数不区分大小写,因此下面的写法是等效的
// $model = C('url_model');

但是建议使用大写方式的规范。

注意:配置参数名称中不能含有 “.” 和特殊字符,允许字母、数字和下划线。

如果url_model尚未存在设置,则返回NULL。

支持在读取的时候设置默认值,例如:

// 如果my_config尚未设置的话,则返回default_config字符串
C('my_config',null,'default_config');

C方法也可以用于读取二维配置:

//获取用户配置中的用户类型设置
C('USER_CONFIG.USER_TYPE');

因为配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数已经生效过期了。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP+JS无限级可伸缩菜单详解(简单易懂)
Jan 02 PHP
PHP下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
php获取一个变量的名字的方法
Sep 05 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 #PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 #PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 #PHP
PHP程序员必须知道的两种日志实例分析
May 14 #PHP
Laravel框架集合用法实例浅析
May 14 #PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 #PHP
Laravel框架源码解析之入口文件原理分析
May 14 #PHP
You might like
桌面中心(四)数据显示
2006/10/09 PHP
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
Python是如何进行类型转换的
2013/06/09 面试题
大学生未来职业生涯规划书
2014/02/15 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
教师节班会主持词
2015/07/06 职场文书
自书遗嘱范文
2015/08/07 职场文书
如何在Python项目中引入日志
2021/05/31 Python
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android
PHP 时间处理类Carbon
2022/05/20 PHP
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技