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. Python之系统交互

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

  2. 高并发下的分布式锁

    public String deductStrck() throws InterruptedException{ String lockKey = "product_001"; //用

  3. 虚拟环境-virtualenv

    在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。 如果我们要同时开发多个应用程序,那

  4. javascript中的正则表达式

    javascript正则表达式的定义 JavaScript中的正则表达式定义在一个RegExp对象中,通过实例化一个RegExp构造函数来创建一个正则表达式对象var pattern=new R

  5. 递归和分治思想

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

随机推荐

  1. Python之系统交互

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

  2. 高并发下的分布式锁

    public String deductStrck() throws InterruptedException{ String lockKey = "product_001"; //用

  3. 虚拟环境-virtualenv

    在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。 如果我们要同时开发多个应用程序,那

  4. javascript中的正则表达式

    javascript正则表达式的定义 JavaScript中的正则表达式定义在一个RegExp对象中,通过实例化一个RegExp构造函数来创建一个正则表达式对象var pattern=new R

  5. 递归和分治思想

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