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 在线打包_支持子目录
Jun 28 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
Jul 04 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
Jul 23 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
Jun 03 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
Jun 20 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
PHP生成短网址方法汇总
Jul 12 PHP
PHP CURL与java http使用方法详解
Jan 26 PHP
php微信开发之图片回复功能
Jun 14 PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
php mysql数据库操作类
2008/06/04 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
python&MongoDB爬取图书馆借阅记录
2016/02/05 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
无故旷工检讨书
2014/01/26 职场文书
高三高考决心书
2014/03/11 职场文书
妇女干部培训方案
2014/05/12 职场文书
娱乐节目策划方案
2014/06/10 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
高一军训感想
2015/08/07 职场文书
检讨书格式
2019/04/25 职场文书
python中print格式化输出的问题
2021/04/16 Python