文件配置:

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

[yaf]
extension=yaf.so
yaf.use_namespace=
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在实例化应用传递配置文件路径和运行环境:

 define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../'));
$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/

最新文章

  1. Centos7 php 5.6.19编译安装
  2. Linux Shell系列教程之(十三)Shell分支语句case … esac教程
  3. asp.net在线恢复数据库
  4. eclipse升级,导入旧版eclipse的插件[转]
  5. verilog运算符及表达式
  6. C# WinForm打开IE浏览器并访问网址
  7. GetWindowRect() GetClientRect() ScreenToClient() MoveWindow()
  8. Hierarchy Viewer工具使用
  9. eclipse如何把多个项目用不同的文件夹分隔开
  10. FTP连接虚拟主机响应220 Welcome to www.net.cn FTP service. (解决的一个问题)
  11. MATLAB 中 ksvdbox和ompbox 工具箱的安装和使用
  12. Linux-基础学习(三)-Nginx学习
  13. julia .文档
  14. 20175224 2018-2019-2 《Java程序设计》第六周学习总结
  15. 4.3Python数据处理篇之Matplotlib系列(三)---plt.plot()折线图
  16. 对象存储服务(Object Storage Service,简称 OSS)
  17. squid代理允许FTP访问设置
  18. 【BZOJ3670】【NOI2014】动物园(KMP算法)
  19. [转]Servlet 单例多线程
  20. Kafka vs RocketMQ—— Topic数量对单机性能的影响

热门文章

  1. java里程碑之泛型--擦除和转换
  2. mysql5.7安装配置,常用命令,常见问题
  3. java IO 类库的基本架构
  4. z-index在IE中的坑
  5. java类路径classpath和包
  6. Div+Css画太极图源代码
  7. Python笔记001-----简介及常用的库
  8. NIO基础篇(一)
  9. Spring整合JDBC及事务处理
  10. HTTP/1.1与HTTP/1.0的区别[转]