Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析


Posted in PHP onMay 15, 2020

本文实例讲述了Thinkphp 框架配置操作之动态配置、扩展配置及批量配置。分享给大家供大家参考,具体如下:

动态配置

设置格式:

C('参数名称','新的参数值')

例如,我们需要动态改变数据缓存的有效期的话,可以使用

// 动态改变缓存有效期
C('DATA_CACHE_TIME',60);

动态配置赋值仅对当前请求有效,不会对以后的请求造成影响。

动态改变配置参数的方法和读取配置的方法在使用上面非常接近,都是使用C方法,只是参数的不同。

也可以支持二维数组的读取和设置,使用点语法进行操作,如下:

// 获取已经设置的参数值
C('USER_CONFIG.USER_TYPE');
// 设置新的值
C('USER_CONFIG.USER_TYPE',1);

扩展配置

扩展配置可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样。

设置扩展配置的方式如下(多个文件用逗号分隔):

// 加载扩展配置文件
'LOAD_EXT_CONFIG' => 'user,db',

假设扩展配置文件user.php db.php分别用于用户配置和数据库配置,这样做的好处是哪怕以后关闭调试模式,你修改db配置文件后依然会自动生效。

如果在应用公共设置文件中配置的话,那么会自动加载应用公共配置目录下面的配置文件Application/Common/Conf/user.phpApplication/Common/Conf/db.php

如果在模块(假设是Home模块)的配置文件中配置的话,则会自动加载模块目录下面的配置文件 Application/Home/Conf/user.php Application/Home/Conf/db.php

默认情况下,扩展配置文件中的设置参数会并入项目配置文件中。也就是默认都是一级配置参数,例如user.php中的配置参数如下:

<?php
//用户配置文件
return array(
  'USER_TYPE'   => 2, //用户类型
  'USER_AUTH_ID'  => 10, //用户认证ID
  'USER_AUTH_TYPE' => 2, //用户认证模式
);

那么,最终获取用户参数的方式是:

C('USER_AUTH_ID');

如果配置文件改成:

// 加载扩展配置文件
'LOAD_EXT_CONFIG' => array('USER'=>'user','DB'=>'db'),

则最终获取用户参数的方式改成:

C('USER.USER_AUTH_ID');

批量配置

C配置方法支持批量配置,例如:

$config = array('WEB_SITE_TITLE'=>'ThinkPHP','WEB_SITE_DESCRIPTION'=>'开源PHP框架');
C($config);

$config数组中的配置参数会合并到现有的全局配置中。

可以通过这种方式读取数据库中的配置参数,例如:

// 读取数据库中的配置(假设有一个config表用于保存配置参数)
$config =  M('Config')->getField('name,value');
// config是一个关联数组 键值就是配置参数 值就是配置值
// 例如: array('config1'=>'val1','config2'=>'val2',...)
C($config); // 合并配置参数到全局配置

合并之后,我们就可以和前面读取普通配置参数一样,读取数据库中的配置参数了,当然也可以动态改变。

// 读取合并到全局配置中的数据库中的配置参数
C('CONFIG1');
// 动态改变配置参数(当前请求有效,不会自动保存到数据库)
C('CONFIG2','VALUE_NEW');

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
深入php处理整数函数的详解
Jun 09 PHP
md5 16位二进制与32位字符串相互转换示例
Dec 30 PHP
PHP遍历目录并返回统计目录大小
Jun 09 PHP
Linux下PHP加速器APC的安装与配置笔记
Oct 24 PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 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
You might like
php 中的4种标记风格介绍
2012/05/10 PHP
深入PHP autoload机制的详解
2013/06/09 PHP
动手学习无线电
2021/03/10 无线电
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
js数组操作学习总结
2013/11/04 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
vue element自定义表单验证请求后端接口验证
2019/12/11 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
python利用beautifulSoup实现爬虫
2014/09/29 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
详解Python中的条件判断语句
2015/05/14 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
戴森美国官网:Dyson美国
2016/09/11 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
学习党章思想汇报
2014/01/07 职场文书
员工自我评价范文
2015/03/11 职场文书
小学英语听课心得体会
2016/01/14 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
Python中for后接else的语法使用
2021/05/18 Python
python编写五子棋游戏
2021/05/25 Python
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
Python first-order-model实现让照片动起来
2022/06/25 Python