php配置加载器

模板网 2021-04-19

配置加载器

当我们使用App::cfg系列方法获取配置时,wulaphp是通过配置加载器先加载配置然后再返回配置项对应值的(当然可以返回整个配置数组)。配置加载器ConfigurationLoader有两个方法:

  1. loadConfig - 加载普通配置并返回Configuration实例或其子类的实例。
  2. loadDatabaseConfig - 加载数据库配置并返回DatabaseConfiguration实例。

除了上边的两个方法还有两个方法(来自BaseConfigurationLoader):

  1. beforeLoad - 加载默认配置前执行
  2. postLoad - 加载默认配置后执行

默认的加载器已经可以很好的工作了,如果不能满足你,请自定义你的配置加载器。默认配置在应用(App)启动时加载(具体加载流程见请求处理),其它组的配置则按需加载。

自定义配置加载器

如果你不想从php文件加载配置甚或你不想从本地加载配置,你都可以自己实现配置加载器按你自己需要去加载配置,只要记得最后返回一个Configuration实例就行。下边代码示例从ini文件(也放在conf目录下)加载配置:

class MyConfigurationLoader extends ConfigurationLoader {
    public function loadConfig($name = 'default') {
        $config = new Configuration($name);
        $file   = CONFIG_PATH . $name . '.ini';
        if (is_file($file)) {
            $cfg = parse_ini_file($file, true);
            if ($cfg) {
                $config->setConfigs($cfg);
            }
        }

        return $config;
    }
}

O了,自定义加载器完成,可以加载普通的配置了,要想加载『数据库配置』请实现loadDatabaseConfig方法。

使用自定义配置加载器

有了自定义加载器类就可以修改bootstrap.php文件中的CONFIG_LOADER_CLASS常量了:

define('CONFIG_LOADER_CLASS', 'MyConfigurationLoader');

重点说明: 要写全类名(包含命名空间的)。

自定义加载器完成。

相关文章

  1. 浏览器的同源策略

    一、同源的三个条件 1、域名(二级域名与一级域名之间也算是不同源) 2、端口 3、协议 二、同源策略的意义 浏览器基于用户的隐私安全目的, 防止恶意网站窃取数据(只是浏览器有这个同源策略设置,但是

  2. redis aof日志持久化

    一、aof的原理 问题: 1、每个命令重写一次aof? 2、某个key修改100次,产生100行记录,aof文件会很大,怎么解决? aof重写(简化) 二、aof的配置 appendfsync

  3. 递归和分治思想

    一、斐波那契数列 1 1 2 3 5 8 13 21 34 55 89 144 ...... 我们可以用数学函数来定义: |0,当n = 0 F(n) = |1,当n = 1

  4. 使用create-react-app快速搭建react环境

    使用create-react-app快速搭建react环境 npm install create-react-app -g cd test_dir create-react-app demo_rea

  5. Python之系统交互

    我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有

随机推荐

  1. 浏览器的同源策略

    一、同源的三个条件 1、域名(二级域名与一级域名之间也算是不同源) 2、端口 3、协议 二、同源策略的意义 浏览器基于用户的隐私安全目的, 防止恶意网站窃取数据(只是浏览器有这个同源策略设置,但是

  2. redis aof日志持久化

    一、aof的原理 问题: 1、每个命令重写一次aof? 2、某个key修改100次,产生100行记录,aof文件会很大,怎么解决? aof重写(简化) 二、aof的配置 appendfsync

  3. 递归和分治思想

    一、斐波那契数列 1 1 2 3 5 8 13 21 34 55 89 144 ...... 我们可以用数学函数来定义: |0,当n = 0 F(n) = |1,当n = 1

  4. 使用create-react-app快速搭建react环境

    使用create-react-app快速搭建react环境 npm install create-react-app -g cd test_dir create-react-app demo_rea

  5. Python之系统交互

    我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有