当前位置: 首页 > 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() 方法:执行清理工作并结束应用生命周期。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 索引是什么
  • springboot生成、响应图片验证码
  • 如果忘记了 Apple ID 密码,如何重设
  • SpinalHDL之spinal.core 组件(上篇)
  • 【软件测试】功能测试理论基础
  • httplib库:用C++11搭建轻量级HTTP服务器
  • PHP获取和操作配置文件php.ini的几个函数介绍
  • 【源码+文档+调试讲解】多媒体信息共享平台
  • 大型、复杂、逼真的安全服和安全帽检测:SFCHD数据集和SCALE方法
  • 内存泄漏之VLD可以检测哪些类型的内存泄漏?
  • 【人工智能】助力音乐产业
  • Android之内容提供者(ContentProvider)
  • 算法力扣刷题记录 八十三【96.不同的二叉搜索树】
  • 鼠标手势软件,效率办公必备!移动鼠标即可执行命令
  • 个人效能是一个系统
  • 深入了解以太坊
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • Angular 2 DI - IoC DI - 1
  • Git的一些常用操作
  • happypack两次报错的问题
  • httpie使用详解
  • HTTP中GET与POST的区别 99%的错误认识
  • JSONP原理
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Js基础知识(四) - js运行原理与机制
  • js数组之filter
  • js中的正则表达式入门
  • React系列之 Redux 架构模式
  • supervisor 永不挂掉的进程 安装以及使用
  • Vue 2.3、2.4 知识点小结
  • Vue组件定义
  • 编写符合Python风格的对象
  • 仿天猫超市收藏抛物线动画工具库
  • 关于List、List?、ListObject的区别
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 详解移动APP与web APP的区别
  • 优秀架构师必须掌握的架构思维
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​渐进式Web应用PWA的未来
  • $L^p$ 调和函数恒为零
  • (~_~)
  • (20050108)又读《平凡的世界》
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (十一)c52学习之旅-动态数码管
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转)详解PHP处理密码的几种方式