php config 函数获取配置文件中的参数值

96
小龙123
2019.04.16 19:27 字数 25
<?php

namespace Core\Lib;

use Core\Exceptions\NoFileException;

/**
 * 获取配置的文件
 * Class Config
 * @package Core\Lib
 */
class Config
{

    private $configs = [];

    /**
     * 获取某个文件的某个配置参数值
     * @param $file
     * @param bool $key
     * @return mixed|null
     * @throws NoFileException
     */
    public function get($file, $key = false)
    {
        return $this->getKeyInArr($this->getFileArr($file), $key);
    }

    /**
     * 获取配置文件的数据
     * @param $file
     * @return mixed
     * @throws NoFileException
     */
    protected function getFileArr($file)
    {
        if (isset($this->configs[$file])) {
            return $this->configs[$file];
        }

        $file = BASE_PATH . '/core/config/' . $file . '.php';
        if (!is_file($file)) {
            throw new NoFileException($file);
        }
        return $this->configs[$file] = require $file;
    }

    /**
     * 使用 . 语法 在数组中获取键  值不存在,直接返回 null
     * @param $arr
     * @param $key
     * @return mixed|null
     */
    protected function getKeyInArr($arr, $key)
    {
        // 如果没有 key 则返回整个配置文件
        if ($key === false) {
            return $arr;
        }
        // 如果没有. 则直接返回这个键
        if (strpos($key, '.') === false) {
            return $arr[$key];
        }

        foreach (explode('.', $key) as $segment) {
            $arr = $arr[$segment];
        }
        return $arr;
    }
}

封装一个函数

  /**
     * 获取 file 文件的 key 配置值
     * @param $file
     * @param bool $key
     * @return mixed|null
     */
    function config($file, $key = false)
    {
        $config = \Core\Lib\RegisterTree::get(\Core\Lib\Config::class);
        return $config->get($file, $key);
    }

比如有一个 config/log.php 文件

<?php

/**
 * 日志配置
 */
return [
    //  app_log()   函数   请求和返回,都是用的这个配置
    'file' => BASE_PATH . '/storage/log', // 日志存储位置
    // debug  对应的配置
    'debug_file' => BASE_PATH . '/storage/debug', // debug 日志存储位置
    'test' => BASE_PATH . '/storage/test', // 测试
];

获取 log.php 中的某个值

config('log'); // 获取到 log.php  文件中的所有配置
config('log','file'); // 获取到 file 键对应的值
PHP
Web note ad 1