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面向对象编程快速入门
Oct 09 PHP
Wordpress php 分页代码
Oct 21 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
php木马webshell扫描器代码
Jan 25 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
PHP重定向与伪静态区别
Feb 19 PHP
PHP实现断点续传乱序合并文件的方法
Sep 06 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结合表单实现一些简单功能的例子
2011/06/04 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
javascript的几种写法总结
2016/09/30 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
Python实现EM算法实例代码
2020/10/04 Python
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
培训楼经理岗位责任制
2014/02/10 职场文书
公司踏青活动方案
2014/08/16 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL