首页/新闻资讯/正文详情

Yii 2 入门:运行你的第一个应用——内置功能、目录结构与请求生命周期全解析

发布时间:2026/9/24 0:54:51 来源:云帆数科 栏目:资讯中心
Yii 2 入门:运行你的第一个应用——内置功能、目录结构与请求生命周期全解析
后端Web框架【免费下载链接】yii2Yii 2: The Fast, Secure and Professional PHP Framework项目地址https://gitcode.com/gh_mirrors/yi/yii2点击查看免费下载读完本指南你将掌握 Yii 2 Basic 项目模板安装完成后的全貌如何通过 URL 访问应用、开箱即用的四个页面与调试工具栏、basic/目录各文件与文件夹的职责划分、MVC 架构的组织方式以及一个 HTTP 请求从入口脚本到浏览器响应的完整 11 步生命周期。本文以官方运行应用Running Applications指南为主体结合本仓库 framework 目录下的真实源码进行印证帮助你从能跑起来进阶到看懂它怎么跑。说明为便于阅读本指南假设你将basic/web设置为 Web 服务器的文档根目录document root并将应用访问 URL 配置为https://hostname/index.php或类似形式。实际部署时请按你的服务器配置相应调整。安装之后你的应用已经属于你按照 Yii 安装指南 完成安装后你立刻拥有一个可工作的 Yii 应用它可以通过https://hostname/basic/web/index.php访问如果 Web 服务器配置了文档根目录则可以直接通过https://hostname/index.php访问。一个值得强调的理念是与框架本身不同项目模板安装完成后就完全属于你了。你可以按需添加、删除代码自由改造整体结构——模板只是起点不是约束。开箱即用的功能Basic 模板安装后自带四个页面页面URL功能说明首页Homehttps://hostname/index.php默认访问时展示的页面关于About—展示项目/团队介绍信息的静态页面联系Contact—内置反馈表单终端用户可通过邮件联系开发者登录Login—授权认证表单用于验证用户身份你可以立即尝试用admin/admin作为用户名/密码登录登录成功后会发现顶部主菜单中的Login项变成了Logout——这是模板内置的用户认证逻辑在起作用。这四个页面共用统一的页头Header和页脚Footer页头包含主导航菜单栏方便用户在页面间跳转页脚则展示版权与通用信息。底部调试工具栏在浏览器窗口最底部你还会看到一条工具栏。这是 Yii 提供的调试器工具Yii Debug由 Yii 官方yii2-debug扩展实现用于记录并展示大量调试信息例如日志消息log messages响应状态码已执行的数据库查询SQL其他运行期调试数据它由运行在后台的调试模块控制会在应用执行过程中持续采集信息。这是开发阶段排查问题的利器生产环境应关闭。控制台脚本yii除了 Web 应用模板还在应用根目录提供了一个名为yii的控制台脚本即本仓库 framework/yii 对应的模板脚本。它可以用于执行后台任务和维护任务例如运行数据库迁移清理缓存生成代码其入口逻辑在本仓库源码中清晰可见脚本加载 Composer 自动加载器与Yii.php后实例化yii\console\Application并调用run()最后以进程退出码结束。控制台命令的完整用法参见控制台应用章节。应用目录结构basic/逐项解读以下列出应用中最关键的目录与文件假设应用根目录为basicbasic/ 应用根目录base path composer.json Composer 使用的文件描述包信息 config/ 应用及其他配置存放目录 console.php 控制台应用配置 web.php Web 应用配置 commands/ 控制台命令类 controllers/ 控制器类 models/ 模型类 runtime/ Yii 运行期生成的文件如日志、缓存文件 vendor/ Composer 安装的包包含 Yii 框架本身 views/ 视图文件 web/ 应用 Web 根目录存放可通过 Web 访问的文件 assets/ 由 Yii 发布的资源文件javascript 和 css index.php 应用的入口引导脚本 yii Yii 控制台命令执行脚本两类文件的边界可公开访问 vs 必须受保护从整体上看应用文件可以分成两大类basic/web下的文件可以直接通过 HTTP即浏览器访问属于 Web 根目录的公开资源其他目录下的文件不能也不应该通过互联网直接访问因为它们承载的是业务逻辑与敏感配置。这条边界是 Yii 安全模型的基础把web/设为文档根目录后config/、models/、runtime/等目录天然处于 Web 可访问范围之外即使服务器配置有误也不会直接暴露源码。MVC 架构目录即分层Yii 实现了经典的**模型-视图-控制器Model-View-Controller, MVC**架构模式并直接体现在上述目录组织上models/目录存放所有模型类——负责业务数据与规则views/目录存放所有视图脚本——负责展示逻辑controllers/目录存放所有控制器类——负责接收请求、调度模型与视图。下图展示了应用的整体静态结构来源本仓库 guide-uz/images/application-structure.png在 MVC 体系之上每个应用都拥有一个入口脚本web/index.php它是应用中唯一可通过 Web 访问的 PHP 脚本。入口脚本接收传入请求创建应用实例来处理它应用借助其组件体系解析请求并将其分发给 MVC 元素视图中的小部件Widgets则用于构建复杂、动态的用户界面元素。入口脚本做什么Web 应用的入口脚本通常按以下顺序工作详见入口脚本章节定义全局常量如YII_DEBUG、YII_ENV注册 Composer 自动加载器引入Yii类文件加载应用配置config/web.php创建并配置应用实例调用run()处理传入请求。从源码看入口脚本创建应用后调用的正是 framework/base/Application.php 中的run()方法它依次触发EVENT_BEFORE_REQUEST事件、调用抽象方法handleRequest()获取响应、触发EVENT_AFTER_REQUEST事件、调用$response-send()发送响应最后返回退出状态码。请求生命周期一个请求的完整旅程下图展示了应用处理一次请求的完整流程来源本仓库 guide-uz/images/request-lifecycle.png一次请求从用户浏览器发出到页面渲染完成共经历 11 个步骤用户向入口脚本web/index.php发起请求入口脚本加载应用配置并创建应用实例来处理请求应用借助请求request组件解析所请求的路由route应用创建控制器controller实例来处理请求控制器创建动作action实例并为动作执行过滤器filters若任一过滤器失败动作被取消请求就此终止若所有过滤器通过动作被执行动作加载数据模型可能来自数据库动作渲染视图并将数据模型提供给视图渲染结果返回给响应response组件响应组件将渲染结果发送到用户浏览器。源码层面的印证上述生命周期在框架源码中均有明确对应实现可以逐一对照验证第 2 步创建应用入口脚本执行(new yii\web\Application($config))-run()对应 framework/web/Application.php 的构造与 framework/base/Application.php 的run()第 3 步解析路由run()内部调用handleRequest($this-getRequest())Web 版实现在 framework/web/Application.php 中通过$request-resolve()得到($route, $params)并记录Yii::debug(Route requested: $route)日志resolve()的抽象签名定义于 framework/base/Request.php具体实现在 framework/web/Request.php第 47 步创建控制器与动作、执行过滤器handleRequest()取得路由后调用runAction($route, $params)该调用链在 framework/base/Controller.php 中继续若路由无效则抛出InvalidRouteException并最终转化为NotFoundHttpException对应 404 Page not found.——这就是步骤 6 中过滤器失败则动作取消以及路由错误时返回 404 的底层机制第 1011 步组装并发送响应handleRequest()将动作返回值写入$response-data后返回Response对象run()再调用$response-send()定义于 framework/base/Response.php把结果真正输出到用户浏览器。值得一提的是run()中设置并切换的应用状态机STATE_BEFORE_REQUEST→STATE_HANDLING_REQUEST→STATE_AFTER_REQUEST→STATE_SENDING_RESPONSE→STATE_END正是调试工具栏能够记录每个阶段耗时与事件的基础设施。小结至此你已经掌握了 Yii 2 Basic 应用的运行全貌通过入口脚本启动应用、四个内置页面与调试工具栏的用法、basic/目录的安全边界与 MVC 分层、以及贯穿 11 个步骤的请求生命周期。下一步可以继续阅读控制器、模型、视图与运行时处理等章节逐步深入 Yii 2 的核心开发能力。赞分享后端Web框架【免费下载链接】yii2Yii 2: The Fast, Secure and Professional PHP Framework项目地址https://gitcode.com/gh_mirrors/yi/yii2点击查看免费下载相关推荐Yii 2 应用运行指南内置功能、目录结构与请求生命周期全解析Yii 2 应用运行指南内置功能、目录结构与请求生命周期全解析 本指南面向已完成 Yii 2 安装 https://link.gitcode.com/i/5b后端Web框架Yii 2 入门运行应用、理解目录结构与请求生命周期Yii 2 入门运行应用、理解目录结构与请求生命周期 安装 Yii 2 之后你就拥有了一个可以立即运行的基本 Web 应用。本文以 Yii 2 官方入门指南后端Web框架Yii 2 应用运行全解析内置功能、目录结构与请求生命周期Getting Started: Running ApplicationsYii 2 应用运行全解析内置功能、目录结构与请求生命周期Getting Started: Running Applications 本文基于 Yii 2后端Web框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Listary 实战指南:键盘流文件搜索与快速启动效率工具
Listary 实战指南:键盘流文件搜索与快速启动效率工具

如果你每天要在 Windows 上打开几十个文件、软件,还习惯用键盘干活、讨厌鼠标点来点去,那 Listary 这套工具应该在你的工具箱里放很久了。这篇文章我结合自己几年的实际使用经历,把 Listary 的安装、核心操作、进阶玩法,以及我踩过… · 2026/9/24 0:54:51

《山海经》杻阳山深度解读:鹿蜀、旋龟与矿产之谜
《山海经》杻阳山深度解读:鹿蜀、旋龟与矿产之谜

《山海经》里真正让我念念不忘的,不是昆仑山,也不是不周山,而是《南山经》里这座名字有些拗口的杻阳山。原因很朴素:这座山只用了几十字,就把矿藏、神兽、河流、实用功能全讲完了,像一张信息密度极高的卡片… · 2026/9/24 0:54:45

all-in-rag 实战:以“白菜猪肉炖粉条“为例,看东北家常菜谱如何被 RAG 系统结构化解析与智能问答
all-in-rag 实战:以“白菜猪肉炖粉条“为例,看东北家常菜谱如何被 RAG 系统结构化解析与智能问答

教程人工智能大模型RAG 【免费下载链接】all-in-rag 🔍大模型应用开发实战一:RAG 技术全栈指南,在线阅读地址:https://datawhalechina.github.io/all-in-rag/ 项目地址: https://gitcode.com/datawhalechina/all-in-ra… · 2026/9/24 0:54:45

TJA1021 INH引脚与AUTOSAR休眠唤醒:从硬件到软件的完整链路
TJA1021 INH引脚与AUTOSAR休眠唤醒:从硬件到软件的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:45:17

1.1 Hadoop伪分布式和完全分布式前期部署
1.1 Hadoop伪分布式和完全分布式前期部署

1.1.1 实验环境概述本文档主要完成Hadoop伪分布式和完全分布式部署的前期准备工作,包括在VMware上创建虚拟机、进行系统初始化设置、配置网络连接,以及克隆多台虚拟机并分别完成网络配置,为后续Hadoop集群搭建奠定基础。整个前期部署过程分为… · 2026/9/24 1:45:16

CAN总线BusOff机制与恢复策略全解析
CAN总线BusOff机制与恢复策略全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:45:10

计算机网络初探:从物理层直觉到Wireshark排障实战
计算机网络初探:从物理层直觉到Wireshark排障实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:45:04

什么?新用户回归了?速领8r通用立减 9月
什么?新用户回归了?速领8r通用立减 9月

1、先把千问这个APP下载在手机里2、然后在对话框里输申领口令(固定中文135067)3、会看到"待领取"按钮,按照页面指引完成账号绑定,成功后8R券就会自动发放到你的卡包中。可以用来点个奶茶等 · 2026/9/24 1:44:27

电子电器制造业ERP选型避坑指南:ECN响应与BOM状态管理实战
电子电器制造业ERP选型避坑指南:ECN响应与BOM状态管理实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:43:50

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码