thinkPHP5.0框架配置格式、加载解析与读取方法


Posted in PHP onMarch 17, 2017

本文实例讲述了thinkPHP5.0框架配置格式、加载解析与读取方法。分享给大家供大家参考,具体如下:

ThinkPHP支持多种格式的配置格式,但最终都是解析为PHP数组的方式。

PHP数组定义

返回PHP数组的方式是默认的配置定义格式,例如:

//项目配置文件
return [
  // 默认模块名
  'default_module'    => 'index',
  // 默认控制器名
  'default_controller'  => 'Index',
  // 默认操作名
  'default_action'    => 'index',
  //更多配置参数
  //...
];

配置参数名不区分大小写(因为无论大小写定义都会转换成小写),新版的建议是使用小写定义配置参数的规范。

还可以在配置文件中可以使用二维数组来配置更多的信息,例如:

//项目配置文件
return [
  'cache'         => [
    'type'  => 'File',
    'path'  => CACHE_PATH,
    'prefix' => '',
    'expire' => 0,
  ],
];

其他配置格式支持

除了使用原生PHP数组之外,还可以使用json/xml/ini等其他格式支持(通过驱动的方式扩展)。

例如,我们可以使用下面的方式读取json配置文件:

Config::parse(APP_PATH.'config/config.json');

ini格式配置示例:

DEFAULT_MODULE=Index ;默认模块
URL_MODEL=2 ;URL模式
SESSION_AUTO_START=on ;是否开启session

xml格式配置示例:

<config>
<default_module>Index</default_module>
<url_model>2</url_model>
<session_auto_start>1</session_auto_start>
</config>

json格式配置示例:

{
"default_module":"Index",
"url_model":2,
"session_auto_start":True
}

二级配置

配置参数支持二级,例如,下面是一个二级配置的设置和读取示例:

$config = [
  'user' => ['type'=>1,'name'=>'thinkphp'],
  'db'  => ['type'=>'mysql','user'=>'root','password'=>''],
];
// 设置配置参数
Config::set($config);
// 读取二级配置参数
echo Config::get('user.type');
// 或者使用助手函数
echo config('user.type');

系统不支持二级以上的配置参数读取,需要手动分步骤读取。

有作用域的情况下,仍然支持二级配置的操作。

如果采用其他格式的配置文件的话,二级配置定义方式如下(以ini和xml为例):

[user]
type=1
name=thinkphp
 [db]
type=mysql
user=rot
password=''

标准的xml格式文件定义:

<config>
<user>
<type>1</type>
<name>thinkphp</name>
</user>
<db>
<type>mysql</type>
<user>root</user>
<password></password>
</db>
</config>

set方法也支持二级配置,例如:

Config::set([
  'type'   => 'file',
  'prefix'  => 'think'
],'cache');

读取配置参数

设置完配置参数后,就可以使用get方法读取配置了,例如:

echo Config::get('配置参数1');

系统为get方法定义了一个助手config,以上可以简化为:

echo config('配置参数1');

读取所有的配置参数:

dump(Config::get());
// 或者 dump(config());

或者你需要判断是否存在某个设置参数:

Config::has('配置参数2');

如果需要读取二级配置,可以使用:

echo Config::get('配置参数.二级参数');

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
php var_export与var_dump 输出的不同
Aug 09 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Jun 25 PHP
PHP实现将textarea的值根据回车换行拆分至数组
Jun 10 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 #PHP
PHP中类的自动加载的方法
Mar 17 #PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 #PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 #PHP
php正则判断是否为合法身份证号的方法
Mar 16 #PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 #PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 #PHP
You might like
让PHP支持页面回退的两种方法[转]
2007/02/14 PHP
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
js 匿名调用实现代码
2009/06/19 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python 正确保留多位小数的实例
2018/07/16 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
八年级语文教学反思
2014/02/11 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
个人融资协议书
2014/10/02 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
golang中的struct操作
2021/11/11 Golang