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 相关文章推荐
php echo 输出字符串函数详解
May 13 PHP
色色整理的PHP面试题集锦
Mar 08 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
php 购物车完整实现代码
Jun 05 PHP
php输入流php://input使用浅析
Sep 02 PHP
php实现统计网站在线人数的方法
May 12 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
php中final关键字用法分析
Dec 07 PHP
PHP实现websocket通信的方法示例
Aug 28 PHP
laravel 出现command not found问题的解决方案
Oct 23 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作的文本留言本的例子(四)
2006/10/09 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
Python中优化NumPy包使用性能的教程
2015/04/23 Python
Python程序运行原理图文解析
2018/02/10 Python
PyQt5实现下载进度条效果
2018/04/19 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
如何定义TensorFlow输入节点
2020/01/23 Python
python为什么会环境变量设置不成功
2020/06/23 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
外贸业务员岗位职责
2013/11/24 职场文书
入党思想汇报
2014/01/05 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
2015年度党员个人总结
2015/02/14 职场文书
写给同事的离职感言
2015/08/04 职场文书
网络研修心得体会
2016/01/08 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android