ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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),仅供参考
返回列表