| <?php |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| 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] = []; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| 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); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| 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); |
| } |
|
|
| if ('yaml' == $type && function_exists('yaml_parse_file')) { |
| return self::set(yaml_parse_file($file), $name, $range); |
| } |
|
|
| return self::parse($file, $type, $name, $range); |
| } |
|
|
| return self::$config[$range]; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| public static function has($name, $range = '') |
| { |
| $range = $range ?: self::$range; |
|
|
| if (!strpos($name, '.')) { |
| return isset(self::$config[$range][strtolower($name)]); |
| } |
|
|
| |
| $name = explode('.', $name, 2); |
| 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; |
| } |
|
|
| |
| $name = explode('.', $name, 2); |
| $name[0] = strtolower($name[0]); |
|
|
| if (!isset(self::$config[$range][$name[0]])) { |
| |
| $module = Request::instance()->module(); |
| $file = CONF_PATH . ($module ? $module . DS : '') . 'extra' . DS . $name[0] . CONF_EXT; |
|
|
| is_file($file) && self::load($file, $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; |
|
|
| 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, 2); |
| self::$config[$range][strtolower($name[0])][$name[1]] = $value; |
| } |
|
|
| return $value; |
| } |
|
|
| |
| if (is_array($name)) { |
| if (!empty($value)) { |
| self::$config[$range][$value] = isset(self::$config[$range][$value]) ? |
| array_merge(self::$config[$range][$value], $name) : |
| $name; |
|
|
| return self::$config[$range][$value]; |
| } |
|
|
| return self::$config[$range] = array_merge( |
| self::$config[$range], array_change_key_case($name) |
| ); |
| } |
|
|
| |
| return self::$config[$range]; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public static function reset($range = '') |
| { |
| $range = $range ?: self::$range; |
|
|
| if (true === $range) { |
| self::$config = []; |
| } else { |
| self::$config[$range] = []; |
| } |
| } |
| } |
|
|