前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yaf源码阅读

yaf源码阅读

作者头像
golangLeetcode
发布2022-08-02 19:00:22
4740
发布2022-08-02 19:00:22
举报
文章被收录于专栏:golang算法架构leetcode技术php

测试用的Yaf的入口文件ap.php

代码语言:javascript
复制
<?php
$conf = array(
        "application.directory" => "/home/laruence/local/www/htdocs/ap",
);

$app = new Yaf_Application($conf);
$app->run();

测试用的Yaf的默认控制器Index.php

代码语言:javascript
复制
<?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启动的时候加载,并常驻内存. 更快的执行速度,更少的内存占用. 灵巧的自动加载. 支持全局和局部两种加载规则, 方便类库共享.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 golang算法架构leetcode技术php 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档