yaf是一款用C语言开发的PHP扩展框架,能够为我们的用户提供高性能的开发框架,相比较于一般的由PHP开发的框架,该框架要比那些PHP开发的框架快出一个数量级,而且还具有无需编译的特点,并且更加的轻便,除此之外,该框架还提供了Bootstrap、路由、分发、视图等,是一个强大的全功能PHP框架。
yaf能够在更短的内存周转周期内运行,不需要编译,还能够提高内存利用率,降低内存占用率,对于用户提高开发性能有着不错的帮助,而且该框架还能够灵巧的进行自动加载,还有全局和局部两种加载方式进行选择,有需要的用户不要错过这款好用的PHP开发框架哦,大家快来绿色下载网下载吧!
![Yet Another Framework(YAF)](http://www.00fy.top/d/file/p/2023/10-26/9528c1cc9b5641b4ab0d583885aca89b.jpg)
yaf安装教程
在 Linux 系统下安装
PHP 5.2+
下载Yaf的最新版本, 解压缩以后, 进入Yaf的源码目录, 依次执行(其中PHP_BIN是PHP的bin目录):
例 2.1. 编译Yaf
$PHP_BIN/phpize
./configure --with-php-config=$PHP_BIN/php-config
make
make install
然后在php.ini中载入yaf.so, 重启PHP.
Yaf_Request_Abstract的getPost, getQuery等方法, 并没有对应的setter方法. 并且这些方法是直接从PHP内部的$_POST, $_GET等大变量的原身变量只读的查询值, 所以就有一个问题:通过在PHP脚本中对这些变量的修改, 并不能反映到getPost/getQuery等方法上.
例 2.2. POST变量只读
<?php
class Index_Controller extends Yaf_Controller_Abstract {
public function indexAction() {
$_POST['name'] = "new_name";
//此时对POST的修改, 并不能反映到getPost上
echo $this->getRequest()->getPost("name"); //old_name
}
}
当然, 这样的设计是经过深思熟虑的, 也可以不依赖PHP的variable_orders的配置, 但是带来一个问题就是, QA和Rd无法通过修改这些变量来做测试数据.
所以, Yaf提供了一个debug模式, 在这个模式下, getPost/getQuery/getServer/getCookie将从符号表中的对应变量查询值.从而可以让我们直接对PHP的超级变量做的修改能反映到对应的Yaf_Request_Abstract的方法上.
[重要] 重要
请不要在正式的环境中, 以debug模式编译Yaf, 一个原因是这样做会有性能损耗, 第二个原因是这样做, 有悖于$_POST等大变量的只读特性.
为了提醒大家这一点, 这种模式下在Yaf_Application的构造函数中会触发一个E_STRICT的提示:
Strict Standards: you are running ap in debug mode
例 2.3. 以debug模式编译Yaf
$PHP_BIN/phpize
./configure --enable-ap-debug --with-php-config=$PHP_BIN/php-config
make
make install
在 Windows 系统下安装
PHP 5.2+
c:phpext。
[注意] 注意
PHP5.3开始已经不支持VC6的编译, 目前只能提供PHP5.3以上版本使用的php_yaf.dll, 如有需要, 请联系Laruence
yaf优点用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销.
所有的框架类, 不需要编译, 在PHP启动的时候加载, 并常驻内存.
更短的内存周转周期, 提高内存利用率, 降低内存占用率.
灵巧的自动加载. 支持全局和局部两种加载规则, 方便类库共享.
高性能的视图引擎.
高度灵活可扩展的框架, 支持自定义视图引擎, 支持插件, 支持自定义路由等等.
内建多种路由, 可以兼容目前常见的各种路由协议.
强大而又高度灵活的配置文件支持. 并支持缓存配置文件, 避免复杂的配置结构带来的性能损失.
在框架本身,对危险的操作习惯做了禁止.
更快的执行速度, 更少的内存占用.
taf特点在和其他用PHP写的PHP框架来比的话, Yaf就是剑的第二层境界. 框架不在你手中, 而在PHP的"心"中.
目前PHP的框架层出不穷, 其中不乏很多优秀的框架, 比如Zend官方支持的Zend Framework, Yii, ci等等. 但在这繁多的框架也就造成了公司内多种框架的业务产品. 这些框架之间的不同, 也就导致了多种版本的类库, 框架, 约定, 规范,,,,
Yaf定义的常量YAF_VERSION(YafVERSION)
Yaf框架的三位版本信息
YAF_ENVIRON(YafENVIRON
Yaf的环境常量, 指明了要读取的配置的节, 默认的是product
YAF_ERR_STARTUP_FAILED(YafERRSTARTUP_FAILED)
Yaf的错误代码常量, 表示启动失败, 值为512
YAF_ERR_ROUTE_FAILED(YafERRROUTE_FAILED)
Yaf的错误代码常量, 表示路由失败, 值为513
YAF_ERR_DISPATCH_FAILED(YafERRDISPATCH_FAILED)
Yaf的错误代码常量, 表示分发失败, 值为514
YAF_ERR_NOTFOUND_MODULE(YafERRNOTFOUDMODULE)
Yaf的错误代码常量, 表示找不到指定的模块, 值为515
YAF_ERR_NOTFOUND_CONTROLLER(YafERRNOTFOUDCONTROLLER)
Yaf的错误代码常量, 表示找不到指定的Controller, 值为516
YAF_ERR_NOTFOUND_ACTION(YafERRNOTFOUDACTION)
Yaf的错误代码常量, 表示找不到指定的Action, 值为517
YAF_ERR_NOTFOUND_VIEW(YafERRNOTFOUDVIEW)
Yaf的错误代码常量, 表示找不到指定的视图文件, 值为518
YAF_ERR_CALL_FAILED(YafERRCALL_FAILED)
Yaf的错误代码常量, 表示调用失败, 值为519
YAF_ERR_AUTOLOAD_FAILED(YafERRAUTOLOAD_FAILED)
Yaf的错误代码常量, 表示自动加载类失败, 值为520
YAF_ERR_TYPE_ERROR(YafERRTYPE_ERROR)
Yaf的错误代码常量, 表示关键逻辑的参数错误, 值为521