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程序中的常见漏洞进行攻击(下)
Oct 09 PHP
用PHP实现维护文件代码
Jun 14 PHP
php xml文件操作代码(一)
Mar 20 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
Yii支持多域名cors原理的实现
Dec 05 PHP
PHP批斗大会之缺失的异常详解
Jul 09 PHP
laravel框架与其他框架的详细对比
Oct 23 PHP
php 使用 __call实现重载功能示例
Nov 18 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
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
javascript版2048小游戏
2015/03/18 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
django使用channels实现通信的示例
2020/10/19 Python
iostream与iostream.h的区别
2015/01/16 面试题
C#软件工程师英语面试题
2015/06/07 面试题
擅自离岗检讨书
2014/02/11 职场文书
自我查摆剖析材料
2014/10/11 职场文书
校运会新闻稿
2015/07/17 职场文书
2016年端午节寄语
2015/12/04 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL