栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

Config.php

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Config.php

1 

// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st
// +----------------------------------------------------------------------

namespace think;

class Config
{
   // 配置参数
   private static $config = [];// 这里的 static 设置的 比较出神入化
   // 参数作用域
   private static $range = '_sys_';// 同上

   // 设定配置参数的作用域
   public static function range($range)
   {
       self::$range = $range;// 初始化, 范围
       if (!isset(self::$config[$range])) {// 如果不存在,就 初始化为空
           self::$config[$range] = [];// 默认设置 初始化 为空
       }
   }

   
   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 : '\think\config\driver\' . ucwords($type);
       // 获取 解析 类文件 分别对应为 ini json xml 类文件 方式 解析 文件
       return self::set((new $class())->parse($config), $name, $range);// 解析配置文件
   }

   
   public static function load($file, $name = '', $range = '')
   {// 加载 配置 文件
       $range = $range ?: self::$range;// 配置文件类型 初始化
       if (!isset(self::$config[$range])) {// 没有设置过,直接初始化
           self::$config[$range] = [];
       }
       if (is_file($file)) {// 如果是文件,
           $type = pathinfo($file, PATHINFO_EXTENSION);// 文件类型
           if ('php' != $type) {
               return self::parse($file, $type, $name, $range);// 解析 默认的 文件 ini xml json
           } else {
               return self::set(include $file, $name, $range);// 获取文件
           }
       } else {
           return self::$config[$range];// 直接返回数据
       }
   }

   
   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]]);
       }
   }// 检测 是否 有这个 配置 选项

   
   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;
       }// 返回二维 数组
   }

   
   public static function set($name, $value = null, $range = '')
   {
       $range = $range ?: self::$range;// 进行 设置 范围圈定,默认的是 _sys_ 系统配置项目
       if (!isset(self::$config[$range])) {// 如果设置了 self::$config 没有设置这个,
           self::$config[$range] = [];// 默认的  初始化 为空
       }
       if (is_string($name)) {// 如果是字符串 默认就是key
           if (!strpos($name, '.')) {// 如果没有.
               self::$config[$range][strtolower($name)] = $value;// self::
           } else {
               // 二维数组设置和获取支持
               // 最大支持到二维数组
               $name                                                 = explode('.', $name);
               self::$config[$range][strtolower($name[0])][$name[1]] = $value;
           }
           return;
       } elseif (is_array($name)) {
           // 批量设置
           if (!empty($value)) {// 如果 value 有数值 此处的 value 变成了 key
               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] = [];// 否则  清空 指定对象
       }
   }
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/228258.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号