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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
一个MYSQL操作类
Nov 16 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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文件缓存类用法实例分析
2015/04/22 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
python黑魔法之参数传递
2016/02/12 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
挂牌仪式策划方案
2014/05/18 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
就业意向协议书
2015/01/29 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
Python编程编写完善的命令行工具
2021/09/15 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
vue+iview实现手机号分段输入框
2022/03/25 Vue.js