yii2框架流程图
2019-07-23 10:47:35 0 举报
Yii2框架执行流程图分析
作者其他创作
大纲/内容
调用\\yii\\web\equest的实例的resolve函数,解析路由和参数信息
调用父类yii\\base\\Application的run方法
返回response实例
注:开启日志 $this->app->operationLog->logBegin()
引用 Yii类
引用内核classMap文件,赋值给Yii::$classMap
控制器action执行完返回处理过的信息,赋值给yii\\web\\Response实例
注册Yii::autoload函数为自定义加载函数
实例化container容器,赋值给Yii::$container(自动实例化组件用)
调用父类的\\yii\\base\\Module模块类的runAction函数执行控制器方法
定义Yii类继承BaseYii
绑定Yii::$app为当前Yii\\web\\Application实例($app是一个单例)
处理业务
调用yii\\web\\Response的send(),返回结果,结束流程
调用\\yii\\base\\Application的init初始化函数,继承Component的子类都有初始化函数
注:结束日志 $this->app->operationLog->logEnd();
实例化yii\\web\\Application调用其父类yii\\base\\Application构造方法__construct
执行handleRequest($this->getRequest())函数
引用 composer autoload
返回结果
执行所有注册过的Application::EVENT_BFTER_ACTION事件(包括控制其中的afterAction方法)
触发注册过的EVENT_BEFORE_REQUEST事件,按注册的先后顺序执行,单也可以调优先级
调用Yii\\base\\Controller的runAction函数执行控制器方法
通过action类对象的runWithParams()函数执行控制器方法(也就是真正执行我们的业务逻辑,比如UserController控制器中的actionIndex方法)
index.php入口文件
调用Yii\\base\\Controller的createAction函数,创建一个action方法对象,默认是nlineAction类对象
调用Component::__construct结构函数,实现依赖注入
执行所有注册过的Application::EVENT_BEFORE_ACTION事件(包括控制其中的beforeAction方法)
引用 BaseYii类
注:在这里自定义RequestMiddleware中间件,注册Application::EVENT_BEFORE_REQUEST和Application::EVENT_AFTER_REQUEST事件(在这里可以处理,鉴权,日志等功能)
调用\\yii\\base\\Module的createController函数,实例化控制器,返回控制器对象和路由控制器字段组成的数组
调用\\yii\\base\\Application的bootstrap自举函数(实例化config中bootstrap字段内配置的组件和@vendor/yiisoft/extensions.php扩展文件中bootstrapp字段内配置的组件,调用组件的bootstrapp方法,其中这里面的组件都要实现BootstrapInterface接口)
引用config/main.php返回$config配置数组
注册错误处理registerErrorHandler
define环境
调用\\yii\\base\\Application的preInit预初始化函数
触发注册过的EVENT_AFTER_REQUEST事件,按注册的先后顺序执行,单也可以调优先级
0 条评论
回复 删除
下一页