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实现框架(二)
Oct 09 PHP
php中在PDO中使用事务(Transaction)
May 14 PHP
PHP笔记之:日期函数的使用介绍
Apr 24 PHP
基于MySQL体系结构的分析
May 02 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 28 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 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
js使用highlight.js高亮你的代码
2017/08/18 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
Python3.2中的字符串函数学习总结
2015/04/23 Python
python脚本内运行linux命令的方法
2015/07/02 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
Python Subprocess模块原理及实例
2019/08/26 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
详解python with 上下文管理器
2020/09/02 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
2014年社区妇联工作总结
2014/12/02 职场文书
乐山大佛导游词
2015/02/02 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电