thinkphp5框架实现原理三 加载惯例配置文件(简易版)

一、引入系统配置文件core\convention.php

\core\Config::set(include CORE_PATH . 'convention' . EXT);

    /**
     * 设置配置参数 name 为数组则为批量设置
     * @access public
     * @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, 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];
    }

二、core\convention.php文件

return [
    // URL伪静态后缀
    'url_html_suffix'        => 'html',
    // PATHINFO变量名 用于兼容模式
    'var_pathinfo'           => 's',
    // 兼容PATH_INFO获取
    'pathinfo_fetch'         => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],
    // pathinfo分隔符
    'pathinfo_depr'          => '/',
    // 是否开启路由
    'url_route_on'           => true,
    // 路由配置文件(支持配置多个)
    'route_config_file'      => ['route'],
    // 域名部署
    'url_domain_deploy'      => false,
    // 表单请求类型伪装变量
    'var_method'             => '_method',
    // 是否强制使用路由
    'url_route_must'         => false,
    // 自动搜索控制器
    'controller_auto_search' => false,
    // 是否支持多模块
    'app_multi_module'       => true,
    // URL参数方式 0 按名称成对解析 1 按顺序解析
    'url_param_type'         => 0,
    // 默认模块名
    'default_module'         => 'index',
    // 默认控制器名
    'default_controller'     => 'Index',
    // 默认操作名
    'default_action'         => 'index',
    // 禁止访问模块
    'deny_module_list'       => ['common'],
    // 是否自动转换URL中的控制器和操作名
    'url_convert'            => true,
    // 默认的访问控制器层
    'url_controller_layer'   => 'controller',
    // 控制器类后缀
    'controller_suffix'      => false,
    // 默认的空控制器名
    'empty_controller'       => 'Error',
    // 操作方法后缀
    'action_suffix'          => '',
    // 默认输出类型
    'default_return_type'    => 'html',
    // 默认AJAX 数据返回格式,可选json xml ...
    'default_ajax_return'    => 'json',
];

猜你喜欢

转载自blog.csdn.net/sinat_28156831/article/details/80891029
今日推荐