[TOC]
* * * * *
## 1 文件
tp的配置解析驱动目录 thinkphp\library\think\config\driver\
通过实现parse()方法对相应格式文件进行解析
包含以下2种
* * * * *
1 Ini.php Ini配置格式文件
2 Xml.php Xml配置格式文件
* * * * *
## 2 配置文件的类型与加载顺序
> 1 全局默认配置文件
think5框架内置全局配置文件 thinkphp\convention.php
包含了默认配置参数。
全局配置文件在[模式配置](http://www.kancloud.cn/zmwtp/tp5/119432)文件 mode\common.php中,使用如下语句引入
~~~
'config' => THINK_PATH . 'convention' . EXT,
~~~
全局默认配置文件是配置文件的总入口。有关说明见 [附:全局配置](http://www.kancloud.cn/zmwtp/tp5/119434)
> 2 应用配置
在[全局配置文件](http://www.kancloud.cn/zmwtp/tp5/119434),可以使用如下语句引入应用扩展配置文件
~~~
'extra_config_list' => ['database', 'route', 'validate', 'auto'],
~~~
application\目录下的database.php,route.php对应这样的扩展配置文件
> 3 模块配置
此外在App.php中的initModule()方法初始化模块中加载了模块配置文件。
单模块的模块配置文件就是appilication\config.php文件
多模块的模块配置文件在对应模块目录applicaiton\module\config.php文件。
每个模块还可以自定义扩展配置文件,使用符号"."可以定义扩展配置文件的目录
> 4 配置文件加载顺序
* * * * *
>[info] 1 全局配置文件加载
在[框架引导文件](http://www.kancloud.cn/zmwtp/tp5/119425)中加载[模式配置文](http://www.kancloud.cn/zmwtp/tp5/119432)件中定义的[全局配置文件](http://www.kancloud.cn/zmwtp/tp5/119434),代码如下。
~~~
if (isset($mode['config'])) {
is_array($mode['config']) ? Config::set($mode['config']) : Config::load($mode['config']);
}
~~~
>[info] 2 应用扩展配置文件加载
在[应用启动](http://www.kancloud.cn/zmwtp/tp5/119426)中,加载[全局配置文件](http://www.kancloud.cn/zmwtp/tp5/119434)中定义的扩展配置文件,代码如下。
~~~
if (!empty($config['extra_file_list'])) {
foreach ($config['extra_file_list'] as $file) {
$file = strpos($file, '.') ? $file : APP_PATH . $file . EXT;
if (is_file($file)) {
include_once $file;
}
}
}
~~~
>[info] 3 模块配置文件加载
在[应用启动](http://www.kancloud.cn/zmwtp/tp5/119429)的initModule()中,加载模块定义的配置文件,代码如下
~~~
$config = Config::load(APP_PATH . $module . 'config' . EXT);
if ($config['app_status']) {
$config = Config::load(APP_PATH . $module . $config['app_status'] . EXT);
}
if ($config['extra_config_list']) {
foreach ($config['extra_config_list'] as $name => $file) {
$file = strpos($file, '.') ? $file : $path . $file . EXT;
Config::load($file, is_string($name) ? $name : pathinfo($file, PATHINFO_FILENAME));
}
}
~~~
由上分析可知,配置文件的加载顺序是[模式配置文件](http://www.kancloud.cn/zmwtp/tp5/119432)->[全局配置文件](http://www.kancloud.cn/zmwtp/tp5/119434)->扩展配置文件->模块配置文件。
## 3 配置文件的解析文件
所有配置文件使用[配置解析器](http://www.kancloud.cn/zmwtp/tp5/119434)thinkphp\library\think\Config.php,
由前面分析可知主要定义了以下三类接口:
>[info] set() get() reset() has()配置内容操作
> load() parse()配置文件解析与加载
> range()配置作用域设置
所有的配置项最后保存到Config.php的静态成员变量$config=[]数组中。
其中的parse()中根据参数$type调用不同的配置解析驱动,代码如下
~~~
if (empty($type)) {
$type = pathinfo($config, PATHINFO_EXTENSION);
}
$class = (false === strpos($type, '\\')) ? '\\think\\config\\driver\\' . ucwords($type) : $type;
self::set((new $class())->parse($config), '', $range);
~~~
根据$type参数,创建不同的解析驱动类new $class()解析配置内容$config,
这里的$class对应config\driver\目录的解析类Ini,Xml解析驱动。
## 4 总结
>[info] 1 配置文件
全局配置文件convention.php
应用扩展配置database.php route.php
模块配置文件config.php
>[info] 2 配置解析类
thinkphp\library\think\Config.php
>[info] 3 配置操作
load() parse()
set() get() reset() has()
- 更新记录
- 概述
- 文件索引
- 函数索引
- 章节格式
- 框架流程
- 前:章节说明
- 主:(index.php)入口
- 主:(start.php)框架引导
- 主:(App.php)应用启动
- 主:(App.php)应用调度
- C:(Controller.php)应用控制器
- M:(Model.php)数据模型
- V:(View.php)视图对象
- 附:(App.php)应用启动
- 附:(base.php)全局变量
- 附:(common.php)模式配置
- 附:(convention.php)全局配置
- 附:(Loader.php)自动加载器
- 附:(Build.php)自动生成
- 附:(Hook.php)监听回调
- 附:(Route.php)全局路由
- 附:(Response.php)数据输出
- 附:(Log.php)日志记录
- 附:(Exception.php)异常处理
- 框架工具
- 另:(helper.php)辅助函数
- 另:(Cache.php)数据缓存
- 另:(Cookie.php)cookie操作
- 另:(Console.php)控制台
- 另:(Debug.php)开发调试
- 另:(Error.php)错误处理
- 另:(Url.php)Url操作文件
- 另:(Loader.php)加载器实例化
- 另:(Input.php)数据输入
- 另:(Lang.php)语言包管理
- 另:(ORM.php)ORM基类
- 另:(Process.php)进程管理
- 另:(Session.php)session操作
- 另:(Template.php)模板解析
- 框架驱动
- D:(\config)配置解析
- D:(\controller)控制器扩展
- D:(\model)模型扩展
- D:(\db)数据库驱动
- D:(\view)模板解析
- D:(\template)模板标签库
- D:(\session)session驱动
- D:(\cache)缓存驱动
- D:(\console)控制台
- D:(\process)进程扩展
- T:(\traits)Trait目录
- D:(\exception)异常实现
- D:(\log)日志驱动
- 使用范例
- 服务器与框架的安装
- 控制器操作
- 数据模型操作
- 视图渲染控制
- MVC开发初探
- 模块开发
- 入口文件定义全局变量
- 运行模式开发
- 框架配置
- 自动生成应用
- 事件与插件注册
- 路由规则注册
- 输出控制
- 多种应用组织
- 综合应用
- tp框架整合后台auto架构快速开发
- 基础原理
- php默认全局变量
- php的魔术方法
- php命名空间
- php的自动加载
- php的composer
- php的反射
- php的trait机制
- php设计模式
- php的系统时区
- php的异常错误
- php的输出控制
- php的正则表达式
- php的闭包函数
- php的会话控制
- php的接口
- php的PDO
- php的字符串操作
- php的curl
- 框架心得
- 心:整体结构
- 心:配置详解
- 心:加载器详解
- 心:输入输出详解
- 心:url路由详解
- 心:模板详解
- 心:模型详解
- 心:日志详解
- 心:缓存详解
- 心:控制台详解
- 框架更新
- 4.20(验证类,助手函数)
- 4.27(新模型Model功能)
- 5.4(新数据库驱动)
- 7.28(自动加载)