yaf的配置文件
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]
; 开发环境配置
ini文件中的 : 表示继承关系的意思,可以看到product节、test节、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'));