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 位童鞋阅读过。


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

查看所有标签

猜你喜欢:

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

世界是平的

世界是平的

[美] 托马斯·弗里德曼 / 何帆、肖莹莹、郝正非 / 湖南科学技术出版社 / 2006-11 / 56.00元

当学者们讨论世界这20年发展的历史,并把目光聚集在2000年到2004年3月这一段时间时,他们将说些什么?9·11恐怖袭击还是伊拉克战争?或者,他们将讨论:科技的汇集与传播使得印度、中国和许多发展中国家成为世界商品和服务产品供给链上的一员,从而为世界大的发展中国家中的中产阶级带来了大量的财富,使这两个国家在全球化浪潮中占据更有利的位置?随着世界变得平坦,我们必须以更快的速度前进,才能在竞争中赢得胜......一起来看看 《世界是平的》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码