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 相关文章推荐
推荐文章系统(一)
Oct 09 PHP
PHP实时显示输出
Oct 02 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
php获取随机数组列表的方法
Nov 13 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
Zend Framework教程之MVC框架的Controller用法分析
Mar 07 PHP
php的laravel框架快速集成微信登录的方法
Dec 12 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 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闭包实例解析
2014/09/08 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Python3多线程基础知识点
2019/02/19 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
js实现弹框效果
2021/03/24 Javascript
中学实习教师自我鉴定
2013/12/12 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
《小池塘》教学反思
2014/02/28 职场文书
单位在职证明书
2014/09/11 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
呐喊读书笔记
2015/06/30 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python