yaf框架学习文件配置

文件配置:

在配置php支持yaf的时候,可以设置一个参数yaf.environ:把本地开发设置成develop、测试环境配置成test、生产环境配置成product。

[yaf]
extension=yaf.so
yaf.use_namespace=1
yaf.environ=develop

通过设置运行环境,在项目中可以通过ini_get(‘yaf.environ’)获取环境参数,进而取到相应节的配置。

yaf配置文件一般都放在项目的conf文件夹下,yaf application实例化的时候需要传递一个配置文件路径,配置文件叫application.ini,先看下application.ini的结构:

[common]
; 通用配置
 
[product : common]
; 生产环境配置
 
[test : common]
; 测试环境配置
 
[develop : common]
; 开发环境配置

配置除了节之外,节和节之间还有继承关系。

例如[product : common]就表示product的配置会继承common的配置。

yaf在实例化应用传递配置文件路径和运行环境:

1 define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../'));
2 $app = new \Yaf\Application(APPLICATION_PATH . "/conf/application.ini", ini_get('yaf.environ'));

这样当项目运行环境在develop下的时候,会优先读取[develop : common]内的配置,如果没有则会从[common]中获取。

在项目中任何地方都可以通过

\Yaf\Application::app()->getConfig();

获取application.ini中的配置。

事实上该例中可以不用传递ini_get(‘yaf.environ’)参数,在实例化的时候yaf会自行读取php.ini中的yaf.environ参数。但如果是其它的配置文件,则需要传递该参数。

额外的配置

随着项目越来越庞大,配置也会越来越复杂,如果都放在项目默认的配置文件application.ini中,可能配置会有好几百行,这样就不容易维护了。一般我们会考虑新建配置文件用来存储额外的配置。yaf中提供了\Yaf\Config\Ini类来处理这些额外的配置文件。

$config = new \Yaf\Config\Ini(APPLICATION_PATH . '/conf/url.ini', ini_get('yaf.environ'));

在实际读取的时候,最好能设置一个静态变量保存读取到的配置,避免重复申请系统open函数调用。如下:

static $config = null;
if ($config === null) {
    $config = new \Yaf\Config\Ini(APPLICATION_PATH . '/conf/url.ini', ini_get('yaf.environ'));
}

参考:http://www.01happy.com/php-yaf-ext-config/

 

posted @ 2016-11-04 13:56  我要做李白  阅读(6625)  评论(0编辑  收藏  举报