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 04 PHP
10条PHP编程习惯助你找工作
Sep 29 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
JavaScript中this详解
2015/09/01 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
python实现探测socket和web服务示例
2014/03/28 Python
Python中的__SLOTS__属性使用示例
2015/02/18 Python
对Python信号处理模块signal详解
2019/01/09 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
python Timer 类使用介绍
2020/12/28 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
工程造价自荐信
2013/10/09 职场文书
家长给幼儿园的表扬信
2014/01/09 职场文书
给导游的表扬信
2014/01/10 职场文书
宿舍标语大全
2014/06/19 职场文书
员工规章制度范本
2015/08/07 职场文书
导游词之杭州西湖
2019/09/19 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
青岛市的收音机研制与生产
2022/04/07 无线电
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
Android中的Launch Mode详情
2022/06/05 Java/Android