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 相关文章推荐
substr()函数中文版
Oct 09 PHP
十天学会php之第五天
Oct 09 PHP
php实现的遍历文件夹下所有文件,编辑删除
Jan 05 PHP
php 数组的一个悲剧?
May 11 PHP
php简单浏览目录内容的实现代码
Jun 07 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 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 时间日期操作实战
2011/08/26 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python爬取网易云音乐热门评论
2017/03/31 Python
Django中URL的参数传递的实现
2019/08/04 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
全球最大的游戏市场:G2A
2018/07/05 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
Arti-shopping中文官网:大型海外商品一站式直邮平台
2020/03/23 全球购物
师范毕业生个人求职信
2013/12/09 职场文书
大学同学聚会邀请函
2014/01/19 职场文书
低碳生活倡议书
2014/04/14 职场文书
员工薪酬激励方案
2014/06/13 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
Python 中的Sympy详细使用
2021/08/07 Python
SpringBoot集成Redis的思路详解
2021/10/16 Redis