600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 图解ThinkPHP5框架(三):配置类Config.php源码解读

图解ThinkPHP5框架(三):配置类Config.php源码解读

时间:2022-02-11 18:58:37

相关推荐

图解ThinkPHP5框架(三):配置类Config.php源码解读

头条

php,thinkphp5

头条

ThinkPHP5的配置非常重要,将会影响到整个应用的生命周期,TP5中的配置类Config.php,代码非常的简洁。

foxmail查看邮件源码,vscode设置代码补全设置,ubuntu 崩溃恢复,在pom添加tomcat,爬虫抓取4399,php存储视频,蜗牛精灵seo破解版,网站源码phpcms,仿笔趣阁模板lzw

在教学过程中,发现很多的同学,都不愿意去看框架源码,认为会用就行,其实这种观点是错误的。

php原生案例源码,rdp 8 ubuntu,vue在tomcat中启动,12306爬虫教程,php外汇交易系统,seo关键词推广有帮云lzw

如果想快速提高自己的框架开发水平,阅读源码是最快的路径,其实源码没有大家想象的晦涩难懂。

发货源源码,vscode多选,ubuntu解压 bin,hLs TomCat,闪存测试SQLite,vps和服务器的区别,手机上上传资源插件,拼图国内前端框架,百度资源爬虫,php推广,seo全球搜,html5 手机网站开发教程,百度网页搜索质量白皮书 下载,唯品会免费模板,wp瀑布流页面,公安局内部管理系统,php小程序案例lzw

从本课起,我将带着大家一起,慢慢的把ThinkPHP5的主要类的源码快速过一遍。相信学完后,,你会有:【哇,原来如此~~】的感觉!

本课先讲一个配置类Config.php的源码,该类文件位于: thinkphp/library/think/Config.php

A、Config.php类的源代码如下:

<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) ~ All rights reserved.// +----------------------------------------------------------------------// | Licensed ( /licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st // +----------------------------------------------------------------------namespace think;class Config{ // 配置参数 private static $config = []; // 参数作用域 private static $range = \_sys_; // 设定配置参数的作用域 public static function range($range) { self::$range = $range; if (!isset(self::$config[$range])) { self::$config[$range] = []; } } /*** 解析配置文件或内容* @param string $config 配置文件路径或内容* @param string $type 配置解析类型* @param string $name 配置名(如设置即表示二级配置)* @param string $range 作用域* @return mixed*/ public static function parse($config, $type = \, $name = \, $range = \) { $range = $range ?: self::$range; if (empty($type)) { $type = pathinfo($config, PATHINFO_EXTENSION); } $class = false !== strpos($type, \\\) ? $type : \\ hink\\config\\driver\\ . ucwords($type); return self::set((new $class())->parse($config), $name, $range); } /*** 加载配置文件(PHP格式)* @param string $file 配置文件名* @param string $name 配置名(如设置即表示二级配置)* @param string $range 作用域* @return mixed*/ public static function load($file, $name = \, $range = \) { $range = $range ?: self::$range; if (!isset(self::$config[$range])) { self::$config[$range] = []; } if (is_file($file)) { $name = strtolower($name); $type = pathinfo($file, PATHINFO_EXTENSION); if (php == $type) {return self::set(include $file, $name, $range); } elseif (yaml == $type && function_exists(yaml_parse_file)) {return self::set(yaml_parse_file($file), $name, $range); } else {return self::parse($file, $type, $name, $range); } } else { return self::$config[$range]; } } /*** 检测配置是否存在* @param string $name 配置参数名(支持二级配置 .号分割)* @param string $range 作用域* @return bool*/ public static function has($name, $range = \) { $range = $range ?: self::$range; if (!strpos($name, .)) { return isset(self::$config[$range][strtolower($name)]); } else { // 二维数组设置和获取支持 $name = explode(., $name); return isset(self::$config[$range][strtolower($name[0])][$name[1]]); } } /*** 获取配置参数 为空则获取所有配置* @param string $name 配置参数名(支持二级配置 .号分割)* @param string $range 作用域* @return mixed*/ public static function get($name = null, $range = \) { $range = $range ?: self::$range; // 无参数时获取所有 if (empty($name) && isset(self::$config[$range])) { return self::$config[$range]; } if (!strpos($name, .)) { $name = strtolower($name); return isset(self::$config[$range][$name]) ? self::$config[$range][$name] : null; } else { // 二维数组设置和获取支持 $name = explode(., $name); $name[0] = strtolower($name[0]); return isset(self::$config[$range][$name[0]][$name[1]]) ? self::$config[$range][$name[0]][$name[1]] : null; } } /*** 设置配置参数 name为数组则为批量设置* @param string|array $name 配置参数名(支持二级配置 .号分割)* @param mixed $value 配置值* @param string $range 作用域* @return mixed*/ public static function set($name, $value = null, $range = \) { $range = $range ?: self::$range; if (!isset(self::$config[$range])) { self::$config[$range] = []; } if (is_string($name)) { if (!strpos($name, .)) {self::$config[$range][strtolower($name)] = $value; } else {// 二维数组设置和获取支持$name = explode(., $name);self::$config[$range][strtolower($name[0])][$name[1]] = $value; } return; } elseif (is_array($name)) { // 批量设置 if (!empty($value)) {self::$config[$range][$value] = isset(self::$config[$range][$value]) ?array_merge(self::$config[$range][$value], $name) :self::$config[$range][$value] = $name;return self::$config[$range][$value]; } else {return self::$config[$range] = array_merge(self::$config[$range], array_change_key_case($name)); } } else { // 为空直接返回 已有配置 return self::$config[$range]; } } /*** 重置配置参数*/ public static function reset($range = \) { $range = $range ?: self::$range; if (true === $range) { self::$config = []; } else { self::$config[$range] = []; } }}

B、源代码解读的思维导图:

C、思维导图文字说明:

配置类Config.php

1 位置:thinkphp/library/think/Config.php

2 属性(2个)

2.1 private static $config = [];

2.1.1 内容:配置参数

2.1.2 访问类型:私有静态,仅限类中静态方法用self::访问

2.1.3 接受值类型:Array数组

2.2 private static $range = ‘_sys_’;

2.2.1 内容:配置参数的作用域

2.2.2 访问类型:私有静态,仅限类中静态方法用self::访问

2.2.3 接受值类型:String字符串

3 方法(7个)

3.1 public static function range($range)

3.1.1 功能:设定配置参数的作用域

3.1.2 访问类型:公共静态,供外部用类名Config::访问

3.1.3 输入参数:$range,string类型,表示配置作用域的字符串

3.1.4 返回结果:给配置作用域属性$rang赋值

3.2 public static function parse($config, $type = ”, $name = ”, $range = ”)

3.2.1 功能:解析配置文件或内容

3.2.2 访问类型:公共静态,供外部用类名Config::访问

3.2.3 输入参数

3.2.3.1 string $config 配置文件路径或内容

3.2.3.2 string $type 配置解析类型

3.2.3.3 string $name 配置名(如设置即表示二级配置)

3.2.3.4 string $range 作用域

3.2.4 返回结果:mixed 不确定类型或任何类型

3.3 public static function load($file, $name = ”, $range = ”)

3.3.1 功能:加载配置文件(PHP格式)

3.3.2 访问类型:公共静态,供外部用类名Config::访问

3.3.3 输入参数

3.3.3.1 string $file 配置文件名

3.3.3.2 string $name 配置名(如设置即表示二级配置)

3.3.3.3 string $range 作用域

3.3.4 返回结果:mixed 不确定类型或任何类型

3.4 public static function has($name, $range = ”)

3.4.1 功能:检测配置是否存在

3.4.2 访问类型:公共静态,供外部用类名Config::访问

3.4.3 输入参数

3.4.3.1 $name 配置参数名(支持二级配置 .号分割)

3.4.3.2 string $range 作用域

3.4.4 返回结果:bool布尔类型,存在为true,否则为false

3.5 public static function get($name = null, $range = ”)

3.5.1 功能:获取配置参数 为空则获取所有配置

3.5.2 访问类型:公共静态,供外部用类名Config::访问

3.5.3 输入参数

3.5.3.1 string $name 配置参数名(支持二级配置 .号分割)

3.5.3.2 string $range 作用域

3.5.4 返回结果:mixed 不确定类型或任何类型

3.6 public static function set($name, $value = null, $range = ”)

3.6.1 功能:设置配置参数 name为数组则为批量设置

3.6.2 访问类型:公共静态,供外部用类名Config::访问

3.6.3 输入参数

3.6.3.1 string|array $name 配置参数名(支持二级配置 .号分割)

3.6.3.2 mixed $value 配置值

3.6.3.3 string $range 作用域

3.6.4 返回结果:mixed 不确定类型或任何类型

3.7 public static function reset($range = ”)

3.7.1 功能:重置配置参数

3.7.2 访问类型:公共静态,供外部用类名Config::访问

3.7.3 输入参数:string $range 作用域

3.7.4 返回结果:self::$config=[];//清空配置数组

D、思维导图源文件下载:xmind格式

配置类Config.zip

【相关推荐】

1. 图解ThinkPHP5框架(一):基础知识,开发规范与目录结构

2. 图解ThinkPHP5框架(二):应用运行流程与生命周期

3. 最新的10个thinkphp视频教学推荐

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。