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中调用JAVA
Oct 09 PHP
第十二节--类的自动加载
Nov 16 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
一个简单的域名注册情况查询程序
2006/10/09 PHP
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
php单链表实现代码分享
2016/07/04 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
Python实现Linux下守护进程的编写方法
2014/08/22 Python
python 的列表遍历删除实现代码
2020/04/12 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
妇产医师自荐信
2014/01/29 职场文书
法定授权委托证明书
2015/06/18 职场文书
小学一年级数学教学反思
2016/02/16 职场文书