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');
重点说明: 要写全类名(包含命名空间的)。
自定义加载器完成。
相关文章
- 路由器
- 浏览器的同源策略
一、同源的三个条件 1、域名(二级域名与一级域名之间也算是不同源) 2、端口 3、协议 二、同源策略的意义 浏览器基于用户的隐私安全目的, 防止恶意网站窃取数据(只是浏览器有这个同源策略设置,但是
- 高并发下的分布式锁
public String deductStrck() throws InterruptedException{ String lockKey = "product_001"; //用
- 使用宝塔面板定时任务不执行问题处理
定时任务不执行 不用宝塔自带的计划任务,因为宝塔自带的计划任务无法以www:www身份去执行任务,会导致面板无法正常写入日志 在vps中输入:crontab -e -uwww ,然后贴上 * * *
- 使用create-react-app快速搭建react环境
使用create-react-app快速搭建react环境 npm install create-react-app -g cd test_dir create-react-app demo_rea
随机推荐
- 路由器
- 浏览器的同源策略
一、同源的三个条件 1、域名(二级域名与一级域名之间也算是不同源) 2、端口 3、协议 二、同源策略的意义 浏览器基于用户的隐私安全目的, 防止恶意网站窃取数据(只是浏览器有这个同源策略设置,但是
- 高并发下的分布式锁
public String deductStrck() throws InterruptedException{ String lockKey = "product_001"; //用
- 使用宝塔面板定时任务不执行问题处理
定时任务不执行 不用宝塔自带的计划任务,因为宝塔自带的计划任务无法以www:www身份去执行任务,会导致面板无法正常写入日志 在vps中输入:crontab -e -uwww ,然后贴上 * * *
- 使用create-react-app快速搭建react环境
使用create-react-app快速搭建react环境 npm install create-react-app -g cd test_dir create-react-app demo_rea