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 相关文章推荐
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
腾讯QQ php程序员面试题目整理
Jun 08 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
理解php依赖注入和控制反转
May 11 PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
PHPMAILER实现PHP发邮件功能
Apr 18 PHP
Laravel中10个有用的用法小结
May 06 PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 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
DSP接收机前端设想
2021/03/02 无线电
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
python实现批量下载新浪博客的方法
2015/06/15 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
2015年超市收银员工作总结
2015/04/25 职场文书
步步惊心观后感
2015/06/12 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL
httpclient调用远程接口的方法
2022/08/14 Java/Android