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文件上传实例详解!!!
Jan 02 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
php返回json数据函数实例
Oct 09 PHP
php函数serialize()与unserialize()用法实例
Nov 06 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
Mar 28 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
PHP实现百度人脸识别
May 06 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 curl模拟post请求小实例
2013/11/13 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
php二维码生成以及下载实现
2017/09/28 PHP
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
Python上传package到Pypi(代码简单)
2016/02/06 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
Python中表示字符串的三种方法
2017/09/06 Python
Python实现购物车功能的方法分析
2017/11/10 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
pandas数据处理之绘图的实现
2020/06/15 Python
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
个人找工作的自我评价
2013/10/17 职场文书
爱心捐助活动总结
2015/05/09 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL