内容简介: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 位童鞋阅读过。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Lararel 框架执行流程详解(1) 入口文件
- 架构设计:基于 SpringCloud 框架模拟灰度发布流程
- 工具 | 一款流程可视化的前端框架
- gojs 流程图框架-编辑类模板(二)
- Linux 网络层收发包流程及 Netfilter 框架浅析
- 基于Spring MVC框架的Http流程分析 原 荐
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Making Things See
Greg Borenstein / Make / 2012-2-3 / USD 39.99
Welcome to the Vision Revolution. With Microsoft's Kinect leading the way, you can now use 3D computer vision technology to build digital 3D models of people and objects that you can manipulate with g......一起来看看 《Making Things See》 这本书的介绍吧!
JSON 在线解析
在线 JSON 格式化工具
HSV CMYK 转换工具
HSV CMYK互换工具