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 相关文章推荐
dedecms中常见问题修改方法总结
Mar 21 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
Sep 30 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
PHP中phar包的使用教程
Jun 14 PHP
php扩展开发入门demo示例
Sep 23 PHP
PHP连续签到功能实现方法详解
Dec 04 PHP
PHP实现考试倒计时功能代码
Apr 16 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
PHP对象Object的概念 介绍
2012/06/14 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
粗略分析Python中的内存泄漏
2015/04/23 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
中职应届生会计求职信
2013/10/23 职场文书
生产厂长岗位职责
2014/02/21 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
运动会报道稿大全
2015/07/23 职场文书