当前位置: 首页 > news >正文

Yii2框架的初始化及执行流程

当 Yii2 框架执行 index.php 入口脚本后,内部执行逻辑和顺序可以概括如下:

1、加载相关配置文件和关键组件:

加载 Composer 自动加载器:
require DIR . ‘/…/vendor/autoload.php’;

加载 Yii 框架文件:
require DIR . ‘/…/vendor/yiisoft/yii2/Yii.php’;

加载应用配置:
$config = require DIR . ‘/…/config/web.php’;

创建应用实例:
(new yii\web\Application($config))->run();

这一行代码非常关键,它实例化了一个 yii\web\Application 对象,并调用其 run() 方法。

2、应用类初始化(构造函数 __construct 和 init 方法):

  • 设置应用属性:如 basePath, components, modules, params 等。
  • 加载和执行 bootstrap 组件:在 init() 方法中初始化并运行配置文件中的引导组件。

3、处理请求:

  • 解析请求:通过解析 URL 来确定路由 (urlManager 组件)。
  • 创建请求和响应对象:初始化 Request 和 Response 组件。
  • 触发 beforeRequest 事件:允许附加的行为在请求处理之前执行。
  • 路由请求:根据解析的路由信息确定要执行的控制器和动作。

4、执行控制器和动作:

  • 创建控制器实例:实例化目标控制器,执行相关init等相关初始方法
  • 执行前置过滤器:如动作过滤器和行为。
  • 调用控制器动作:执行具体的动作方法。

5、生成和发送响应:

  • 调用动作结果:如渲染视图、返回数据等。
  • 触发 afterRequest 事件:允许附加的行为在请求处理之后执行。
  • 发送响应:将生成的响应内容发送给客户端。

6、结束应用:

  • 调用 Application::end() 方法:执行清理工作并结束应用生命周期。
http://www.lryc.cn/news/425796.html

相关文章:

  • 2024.1-2024.2pycharm无法打开terminal命令行
  • 50ETF期权移仓是什么?50ETF期权移仓要注意什么?
  • 软件工程概述(上)
  • 阿里云ubuntu系统安装mysql8.0
  • 自己搭建远程桌面服务器-RustDesk 极简版
  • 数字资产是什么?怎么产生?怎么增长?
  • Centos7升级gitlab(17)
  • Zookeeper详解以及常见的高可用关联组件
  • Docker Containerd初体验
  • 开始使用 AWS SAM CLI
  • RK3588 RTL8125BG调试
  • Python自省(机制与函数)
  • 【JavaEE】JVM 内存区域划分,以及 Java 垃圾回收机制引用计数器,可达性分析等
  • Web开发:C# MVC + Session机制实现授权免登录demo
  • 【Qt】QWidget的font属性
  • 每天一个数据分析题(四百八十五)- 统计推断
  • 基于STM32的农业病虫害检测检测系统:OpenCV、MQTT、Flask框架、MySQL(代码示例)
  • 算法日记day 39(动归之打家劫舍)
  • Vue 生命周期详解含demo、面试常问问题案例
  • 表单自定义规则的校验
  • JVM 有哪些垃圾回收算法(回收机制)?
  • 2024年高教社杯数学建模国赛A题思路解析+代码+论文
  • Linux中yum、vim、gcc/g++的使用
  • 基于模糊神经网络的金融序列预测算法matlab仿真
  • STM32 HAL库常用功能封装
  • golang zap日志库 打印日志时显示的源文件始终是同一个问题解决方法 zap.Option函数可选项 zap.AddCallerSkip(1) 使用示例
  • BL196MQTT远程IO模块助力智能楼宇自动化升级
  • 【面试宝典】Java面向对象面试题总结(上)
  • 如何运用独特的产业运营体系打造一流的数字媒体产业园
  • 安全基础学习-SHA-256