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部分常见问题总结
Oct 09 PHP
如何使用PHP中的字符串函数
Nov 24 PHP
珊瑚虫IP库浅析
Feb 15 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 PHP
PHP判断是否是json字符串
Apr 01 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的ASP防火墙
2006/10/09 PHP
PHP新手上路(五)
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
2016/10/20 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
js图片上传的封装代码
2017/08/01 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
秋季运动会广播稿
2014/02/22 职场文书
yy婚礼主持词
2014/03/14 职场文书
广告词串烧
2014/03/19 职场文书
社区文化建设方案
2014/05/02 职场文书
优秀班组事迹材料
2014/12/24 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL