codecamp

2.1 PhalApi 2.x 配置

配置

配置文件说明

默认情况下,项目里会有以下几个配置文件:

$ tree ./config/
./Config/
├── app.php
├── dbs.php
├── di.php
└── sys.php

其中app.php为项目应用配置;dbs.php为分布式存储的数据库配置;sys.php为不同环境下的系统配置。这三个文件都是用于存放配置信息,可通过\PhalApi\DI()->config进行读取。

值得注意的是,./config/di.php文件则属于依赖注入配置文件,用于配置需在\PhalApi\DI()容器中注册的服务资源。

配置的简单读取

默认已注册配置组件服务,名称是\PhalApi\DI()->config

// 配置
$di->config = new FileConfig(API_ROOT . '/config');

假设app.php配置文件里有:

return array(
    'version' => '1.1.1',
    'email' => array(
        'address' => 'chanzonghuang@gmail.com',
    );
);

可以分别这样根据需要获取配置:

// app.php里面的全部配置
\PhalApi\DI()->config->get('app');                //返回:array( ... ... )


// app.php里面的单个配置
\PhalApi\DI()->config->get('app.version');        //返回:1.1.1


// app.php里面的多级配置
\PhalApi\DI()->config->get('app.email.address');  //返回:'chanzonghuang@gmail.com'

其他配置文件的读取类似,你也可以根据需要添加新的配置文件。

读取失败与默认值

当一个配置不存在时,返回NULL。例如:

\PhalApi\DI()->config->get('app.not_found');      //返回:NULL

当需要指定默认值时,可通过第二个参数指定。例如:

\PhalApi\DI()->config->get('app.not_found', 404); //返回:404

使用Yaconf扩展快速读取配置

Yaconf扩展需要PHP 7及以上版本,并且需要先安装Yaconf扩展。

温馨提示:Yaconf扩展的安装请参考laruence/yaconf

安装部署完成后,先重新注册\PhalApi\DI()->config

// 配置
$di->config = new PhalApi\Config\YaconfConfig();

然后,便和正常的配置一样使用。

// 相当于Yaconf::get("foo")
\PhalApi\DI()->config->get('foo');


//相当于Yaconf::has("foo")
\PhalApi\DI()->config->has('foo'); 

需要注意的是,使用Yaconf扩展与默认的文件配置的区别的是,配置文件的目录路径以及配置文件的格式。当然也可以把Yaconf扩展的配置目录路径设置到PhalApi的配置目录./config。

扩展:其他配置读取方式

如果需要使用其他方式读取配置,可根据实情需要,实现PhalApi\Config接口,然后在./config/di.php文件重新注册\PhalApi\DI()->config即可。

例如数据库配置,这样可以支持不发布代码的情况下进行配置更改。

1.8 PhalApi 2.x 单元测试
2.2 PhalApi 2.x 日志
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }