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不用内置函数对数组排序的两个算法代码
Feb 08 PHP
php中使用__autoload()自动加载未定义类的实现代码
Feb 06 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
php顺序查找和二分查找示例
Mar 27 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
对比分析php中Cookie与Session的异同
Feb 19 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
PHP children()函数讲解
Feb 03 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
laydate时间日历插件使用方法详解
2018/11/14 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
Python转码问题的解决方法
2008/10/07 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
Python中的下划线详解
2015/06/24 Python
Python温度转换实例分析
2018/01/17 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
python内存管理机制原理详解
2019/08/12 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
教师节大会主持词
2015/07/06 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang