php配置加载器
配置加载器
当我们使用App::cfg
系列方法获取配置时,wulaphp是通过配置加载器先加载配置然后再返回配置项对应值的(当然可以返回整个配置数组)。配置加载器ConfigurationLoader有两个方法:
- loadConfig - 加载普通配置并返回Configuration实例或其子类的实例。
- loadDatabaseConfig - 加载数据库配置并返回DatabaseConfiguration实例。
除了上边的两个方法还有两个方法(来自BaseConfigurationLoader):
- beforeLoad - 加载默认配置前执行
- 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');
重点说明: 要写全类名(包含命名空间的)。
自定义加载器完成。
相关文章
- Python之系统交互
我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有
- gitlab备份与恢复
一、gitlab备份 [root@localhost ~]# gitlab-rake gitlab:backup:create Dumping database ... Dumping Postgr
- 如何应对缓存穿透和缓存雪崩问题
分析:这两个问题,说句实在话,一般中小型传统软件企业,很难碰到这个问题。如果有大并发的项目,流量有几百万左右。这两个问题一定要深刻考虑。 缓存穿透,即黑客故意去请求缓存中不存在的数据,导致所有的请
- redis特殊功能
一、慢查询 生命周期 两点说明: (1)、慢查询发生在第三阶段 (2)、客户端超时不一定慢查询,但慢查询是客户端超时的一个因素。 两个配置 ``` (1)、slowlog-max-len
- redis 运维常用命令
time #查看时间戳与微妙数 dbsize #查看当前数据库中key数量 bgrewriteaof #后台进程重写aof bgsave #后台保存rdb快照 save #保存rd
随机推荐
- Python之系统交互
我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有
- gitlab备份与恢复
一、gitlab备份 [root@localhost ~]# gitlab-rake gitlab:backup:create Dumping database ... Dumping Postgr
- 如何应对缓存穿透和缓存雪崩问题
分析:这两个问题,说句实在话,一般中小型传统软件企业,很难碰到这个问题。如果有大并发的项目,流量有几百万左右。这两个问题一定要深刻考虑。 缓存穿透,即黑客故意去请求缓存中不存在的数据,导致所有的请
- redis特殊功能
一、慢查询 生命周期 两点说明: (1)、慢查询发生在第三阶段 (2)、客户端超时不一定慢查询,但慢查询是客户端超时的一个因素。 两个配置 ``` (1)、slowlog-max-len
- redis 运维常用命令
time #查看时间戳与微妙数 dbsize #查看当前数据库中key数量 bgrewriteaof #后台进程重写aof bgsave #后台保存rdb快照 save #保存rd