yaf的官方文档
http://www.laruence.com/manual/index.html
- 推荐
http://php.net/manual/en/book.yaf.php
环境
- Apache 2.4.37
- php 7.2.12
yaf配置
- 使用yaf要开启php的yaf扩展(扩展模块),下载:http://pecl.php.net/package/yaf

- 我们需要慎重选择版本,先编写程序并在浏览器中运行,查看Architecture和Thread Safety。Thread Safety为enable时,选择TS版本,否则选择NTS版本。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
phpinfo();
?>
</body>
</html>

- 下载解压后,复制php_yaf.dll文件,将其拷贝到php的ext文件夹(主要存放扩展库)下。

- 打开php配置文件php.ini,Ctrl+F寻找extension,新增一行:
extension=php_yaf.dll
//此处要根据你的php.ini中extension的书写规则
//或者extension=yaf
- 重启apache,查看phpinfo(),此时可以看到yaf的配置信息。

- 到此结束。
Yaf定义的常量
| 常量(启用命名空间后的常量名) | 说明 |
|---|---|
| YAF_VERSION(Yaf\VERSION) | Yaf框架的三位版本信息 |
| YAF_ENVIRON(Yaf\ENVIRON | Yaf的环境常量, 指明了要读取的配置的节, 默认的是product |
| YAF_ERR_STARTUP_FAILED(Yaf\ERR\STARTUP_FAILED) | Yaf的错误代码常量, 表示启动失败, 值为512 |
| YAF_ERR_ROUTE_FAILED(Yaf\ERR\ROUTE_FAILED) | Yaf的错误代码常量, 表示路由失败, 值为513 |
| YAF_ERR_DISPATCH_FAILED(Yaf\ERR\DISPATCH_FAILED) | Yaf的错误代码常量, 表示分发失败, 值为514 |
| YAF_ERR_NOTFOUND_MODULE(Yaf\ERR\NOTFOUD\MODULE) | Yaf的错误代码常量, 表示找不到指定的模块, 值为515 |
| YAF_ERR_NOTFOUND_CONTROLLER(Yaf\ERR\NOTFOUD\CONTROLLER) | Yaf的错误代码常量, 表示找不到指定的Controller, 值为516 |
| YAF_ERR_NOTFOUND_ACTION(Yaf\ERR\NOTFOUD\ACTION) | Yaf的错误代码常量, 表示找不到指定的Action, 值为517 |
| YAF_ERR_NOTFOUND_VIEW(Yaf\ERR\NOTFOUD\VIEW) | Yaf的错误代码常量, 表示找不到指定的视图文件, 值为518 |
| YAF_ERR_CALL_FAILED(Yaf\ERR\CALL_FAILED) | Yaf的错误代码常量, 表示调用失败, 值为519 |
| YAF_ERR_AUTOLOAD_FAILED(Yaf\ERR\AUTOLOAD_FAILED) | Yaf的错误代码常量, 表示自动加载类失败, 值为520 |
| YAF_ERR_TYPE_ERROR(Yaf\ERR\TYPE_ERROR) | Yaf的错误代码常量, 表示关键逻辑的参数错误, 值为521 |
Yaf配置项
| 选项名称 | 默认值 | 可修改范围 | 更新记录 |
|---|---|---|---|
| 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.environ配置环境名称,本地开发develop、测试环境test、生产环境product。
- 配置除了节之外,节和节之间还有继承关系。例如[develop : common]就表示develop的配置会继承common的配置。
[common]
; 通用配置
[product : common]
; 生产环境配置
[test : common]
; 测试环境配置
[develop : common]
; 开发环境配置
- 常用的四个配置选项为:yaf.environ、yaf.library、yaf.use_namespace、yaf.use_spl_autoload。
- yaf.library是多项目使用同一个类库时,一次修改多次使用,实现类库复用。
- 在开启yaf.cache_config的情况下, Yaf会使用INI文件路径作为Key, 这就有一个陷阱,就是如果在一台服务器上同时运行俩个应用, 那么它们必须不能使用同一个路径名下的INI配置文件, 否则就会出现Application Path混乱的问题。 所以, 尽量不要使用相对路径。
Yaf配置示例
- php.ini文件中做如下配置
;yaf
extension=php_yaf.dll
//此处要根据你的php.ini中extension的书写规则
;extension=yaf
yaf.environ="product"
- 设置运行环境,在项目中可以通过ini_get(‘yaf.environ’)获取环境参数,进而取到相应节的配置。
生成框架目录结构
- 下载:https://github.com/laruence/yaf/tree/php5
- 解压后打开tools目录下的cg文件夹,Win+R输入cmd打开命令行,切换到该目录下,执行(sample是项目名称,可自定义):

- 回车后出现“DONE”说明执行成功,此时cg下的output文件中中出现sample项目(初始版yaf):

- 将sample项目剪切到服务器的htdocs目录下,运行“http://localhost:88(端口号默认80)/sample/index.php”,出现“Hello World! I am Stranger”即为成功。

HelloWorld
- 作者说:对于Yaf的应用,都应该遵循类似下面的目录结构。
- 本人对这个内容的每个步骤还不了解。
- 第一个程序:http://www.laruence.com/manual/tutorial.firstpage.html
版权声明:本文为weixin_40087851原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。