Yii2框架的启动流程

栏目: PHP · 发布时间: 8年前

内容简介:Yii2框架的启动流程

Yii2虽然是一个以简单著称的框架,但它的启动流程却有点复杂.想要用好这个框架,启动流程必须烂熟于心.尤其当你开发Yii2的扩展(Extension)时,或者将自己已有的扩展运用到Yii2开发的项目中时,你可能会通过composer安装,然后在应用中通过各种手段参与框架的整个流程,这时,了解整个框架的启动流程就很重要.

以下从Yii2框架最核心的六重继承开始介绍,进一步介绍它的构造阶段,最后是框架整个MVC过程run()方法.

0. Yii2中的六重继承

Yii2 的六重继承估计遭受了不只我在内很多人的吐槽.不符合对象的设计标准,单一职责原则首先被无视.其次就是几乎不用接口去限制对象,导致出现了大量的继承和方法重写,导致对象的混乱.大量对原始类的继承,导致全局掌控的欠缺,比如新的对象,都有独立的 DI 和 事件 模块,例如每个 Controller ,虽然 Yii2 对事件管理提供了一个解决方案,实现跨实例干涉,这个我们后续再说.这种缺憾举不胜举.

use yii\web\Application;
use yii\base\Application;
use yii\base\Module;
use yii\di\ServiceLocator;
use yii\base\Component;
use yii\base\BaseObject;

由上而下,这就是Yii2的六重继承,

0x00. yii\web\Application

这个对象负责掌管web应用组件 request , response,user , session , errorHandler 等的入口.

0x01. yii\base\Application

yii\base\Application 更像是 yii\web\Application 的补充,负责管理 view , mailer , userManager 等组件.

0x02. yii\base\Module

可以理解为 yii\base\Module 是用于实现 MVC 的对象, controller , action 的创建都在这里发生.

0x03. yii\di\ServiceLocator

用于管理 component 的实例管理工具,这个对象在之前的文章中提起过,要实现 component 的单例,如果是运行时动态添加的话,需要先 set() , Yii2 将一个 component 分为三部分缓存, 参数 , reflection , 实例本身 ,这可能就是单例必须 set() 的原因吧,因为 set() 的就是参数.

0x04. yii\base\Component

这个命名很容易误导初学者,其实这个对象正是 Yii2 的事件管理者.后续将单独开文详细介绍Yii2的事件管理.

0x05. yii\base\BaseObject

这个对象主要用语法糖 __set() 和 __get() 管理上述对象的属性.

1. 构造阶段

//在站点入口``index.php``中
(new yii\web\Application($config))->run();

在 (new yii\web\Application($config)) 中,实现了对 Yii2 六重继承对象体的构造,主要包括将 $config 按照规则 配置 入这个对象体中.然后调用 bootstrap() 方法.

在 配置 的过程中, component 会被以此 set() ,并实例化到 ServiceLocator 提供的变量中.在直接尝试通过六重继承实例获取该 component 时, ServiceLocator 提供了新的语法糖用于直接返回这个 component ,就像直接获取这个实例的 public 变量.

在 bootstrap() 时,实例化所有的 extension ,如果被实例化对象引用了 yii\base\BootstrapInterface ,还会尝试调用其 bootstrap() 方法.之后会遍历配置项中的 bootstrap 项,以此实例化,并对引用了 yii\base\BootstrapInterface 的对象尝试调用其 bootstrap() 方法.

2. run()阶段

这个阶段,主要是解析路由,处理请求,渲染页面,以及响应请求的阶段.

0x00. 解析路由

0x01. 实例化controller和action

0x02. 运行action

0x03. 渲染页面

0x04. 相应请求

最后更新于 2018-01-07 12:42:01 并被添加「」标签,已有 1 位童鞋阅读过。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

计算理论导引

计算理论导引

[美]Michael Sipser / 唐常杰、陈鹏、向勇、刘齐宏 / 机械工业出版社 / 2006-7 / 36.00元

本书是计算理论领域的经典著作,被国外多所大学选用为教材。本书以注重思路、深入引导为特色,系统地介绍计算理论的三大主要内容:自动机与语言、可计算性理论和计算复杂性理论。同时,对可计算性和计算复杂性理论中的某些高级内容作了重点讲解。全书通过启发性的问题、精彩的结果和待解决问题来引导读者挑战此领域中的高层次问题。新版的一大亮点是增加了更多习题、教辅资料和部分习题解答,更加有利于教学。 全书叙述由浅......一起来看看 《计算理论导引》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具