NoteDeep
yaf首先是一个php的扩展,在扩展层面上,我们可以看到如下的配置项。

扩展层面的配

选项名称

默认值
可修改范围
更新记录
yaf.environ
product
PHP_INI_ALL
环境名称, 当用INI作为Yaf的配置文件时,
这个指明了Yaf将要在INI配置中读取的节的名字
yaf.library
NULL
PHP_INI_ALL
全局类库的目录路径
yaf.cache_config
0
PHP_INI_SYSTEM
是否缓存配置文件(只针对INI配置文件生效),
打开此选项可在复杂配置的情况下提高性能
yaf.name_suffix
1
PHP_INI_ALL
在处理Controller, Action, Plugin, Model的时候,
类名中关键信息是否是后缀式, 比如UserModel,
而在前缀模式下则是ModelUser
yaf.name_separator
""
PHP_INI_ALL
在处理Controller, Action, Plugin, Model的时候,
前缀和名字之间的分隔符, 默认为空,
也就是UserPlugin, 加入设置为"_", 则判断的依据就会变成:"User_Plugin",
这个主要是为了兼容ST已有的命名规范
yaf.forward_limit
5
PHP_INI_ALL
forward最大嵌套深度
yaf.use_namespace
0
PHP_INI_SYSTEM
开启的情况下, Yaf将会使用命名空间方式注册自己的类,
比如Yaf_Application将会变成Yaf\Application
yaf.use_spl_autoload
0
PHP_INI_ALL
开启的情况下, Yaf在加载不成功的情况下,
会继续让PHP的自动加载函数加载,
从性能考虑, 除非特殊情况, 否则保持这个选项关闭


项目层面的配置

项目层面的配置主要依赖于实例化 Yaf_Application时传入的ini文件。
application.ini文件常用结构
[common]
; 通用配置

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


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

在实例化\Yaf\Application时,传入的第二个参数,即代表我们app需要的配置节。
当我们开发环境所配置的yaf.environ = dev时,会优先读取[dev: common]内的配置,如果没有则会从[common]中获取。(由于继承关系)

获取配置:
\Yaf\Application::app()->getConfig();

支持多个配置文件

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

比如可以分为
  • mysql.ini mysql配置
  • redis.ini redis配置
  • flowlimit.ini 限流配置

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












评论列表

    扩展层面的配
    项目层面的配置
    支持多个配置文件