

测试用的Yaf的入口文件ap.php
<?php
$conf = array(
"application.directory" => "/home/laruence/local/www/htdocs/ap",
);
$app = new Yaf_Application($conf);
$app->run();测试用的Yaf的默认控制器Index.php
<?php
class IndexController extends Yaf_Controller {
public function actionIndex() {
$this->disableView(); //关闭视图输出
echo "Laruence";
}
}yaf的入口是yaf_application类,我们可以做一些个性化的定制配置,然后调用run,进入主循环。
yaf_application类的run方法会调用dispactcher类加载controller,action,model和view,以及相关的hook方法
得到controller类和controlller类的action方法后,调用yaf_call_user_method回调用户空间的controller类的action方法
如果遇到未加载的类,会按照psr4规则加载,这就是yaf的基本加载运行流程,详情可以参考yaf的源码

如果存在Bootstrap()就会先执行该文件,该文件包含了一系列的初始化环节,并返回一个Yaf_Application对象,紧接着调用了它的run方法,run里面包含了图中所有环节,run首先是调用路由,路由的主要目的其实就是找到controllers文件,然后执行里面的init和action方法,或者找到所有actions的地址然后加载,在去执行对应的execute方法,如果设置了autoRender在返回的时候会执行render方法,就是view自动渲
相比于一般的PHP框架, 它更快,更轻便,内存占用率更低,就是本着对性能的追求,Yaf把框架中不易变的部分抽象出来,类如路由、自动加载、bootstrap、分发等,采用PHP扩展去实现,以此来保证性能。 Yaf优点 用c语言开发的PHP框架,相比原生的PHP,几乎不会带来额外的性能开销 所有的框架类,不需要编译,在PHP启动的时候加载,并常驻内存. 更快的执行速度,更少的内存占用. 灵巧的自动加载. 支持全局和局部两种加载规则, 方便类库共享.
本文分享自 golang算法架构leetcode技术php 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!