Blogger Information
Blog 14
fans 0
comment 0
visits 15072
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
tp5开发手册阅读笔记 - Config.php详解
krasenChen的博客
Original
2291 people have browsed it
//框架类Config.php类配置文件.  2个私有属性和7个方法
/**
 *  配置类
 */
 class Config {
       coding;
 } 
 //2个静态私有属性变量
 //配置参数 初始值默认为空数组 提供内部访问:self::静态成员 参数只接受数组类型值
 private static $config = [];
 //配置参数作用域  提供内部访问:self::静态成员 参数只接受字符串类型的值
 private static $range = 'sys';
 
 //7个方法
 /**
  * 设定配置参数的作用域  公有静态方法 外部访问: Config::静态成员
  * @param string $range 参数作用域
  */
  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 : '\\think\\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_prase_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, 2);
           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(!strpost($name, '.')) {
          $name = strtolower($name);
          return isset(self::$config[$range][$name]) ? self::$config[$range][$name]: null;
      } else {
         //二维数组设置和获取支持
         $name = explode('.', $name, 2);
         $name[0] = strtolower($name[0]);
         return isset(self::$config[$range][$name[0]][$name[1]]) ? self::$config[$range][$name[0]][$name[1]] : null;
      } 
  }



Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post