雷林鹏分享:YII 模型-视图-控制器(MVC)设计模式
Yii 使用了 Web 开发中广泛采用的模型-视图-控制器(MVC)设计模式。 MVC的目标是将业务逻辑从用户界面的考虑中分离,这样开发者就可以更容易地改变每一部分而不会影响其他。 在 MVC中,模型代表信息(数据)和业务规则;视图包含了用户界面元素,例如文本,表单等; 控制器则管理模型和视图中的通信。
除了 MVC, Yii 还引入了一个前端控制器,叫做 应用,它表示请求处理的执行上下文。 应用处理用户的请求并将其分派到一个合适的控制器以继续处理。
下面的示意图展示了 Yii 应用的静态结构:
一个典型的工作流
下图展示了一个 Yii 应用在处理用户请求时典型的工作流。
1、用户发出了访问 URL http://www.example.com/index.php?r=post/show&id=1 的请求, Web 服务器通过执行入口脚本 index.php 处理此请求。
2、入口脚本创建了一个 应用 实例并执行。
3、应用从一个叫做 request 的 应用组件 中获得了用户请求的详细信息。
4、应用在一个名叫 urlManager 的应用组件的帮助下,决定请求的 控制器 和 动作 。在这个例子中,控制器是 post,它代表 PostController 类; 动作是 show ,其实际含义由控制器决定。
5、应用创建了一个所请求控制器的实例以进一步处理用户请求。控制器决定了动作 show 指向控制器类中的一个名为 actionShow 的方法。然后它创建并持行了与动作关联的过滤器(例如访问控制,基准测试)。 如果过滤器允许,动作将被执行。
6、动作从数据库中读取一个 ID 为 1 的 Post 模型。
7、动作通过 Post 模型渲染一个名为 show 的 视图。
8、视图读取并显示 Post 模型的属性。
9、视图执行一些 小物件。
10、视图的渲染结果被插入一个 布局。
11、动作完成视图渲染并将其呈现给用户。(编辑:雷林鹏 来源:网络 侵删)
转载于:https://www.cnblogs.com/linpeng1/p/10861775.html
雷林鹏分享:YII 模型-视图-控制器(MVC)设计模式相关推荐
- 模型视图控制器mvc
模型视图控制器mvc MVC就是模型 视图 控制器的缩写 视图和用户交互 通过事件导致控制器改变 控制器改变导致 模型改变 或者控制器同时改变两者 模型改变导致视图改变 或者视图改变 潜在的从模型里面 ...
- mvc 视图和模型的对应_通过在酒吧订购饮料来解释模型视图控制器(MVC)
mvc 视图和模型的对应 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 通过在酒吧订购饮料来解释模型视图控制器(MVC) (Model-View-Contro ...
- java控制器_Java用户界面 模型-视图-控制器(MVC)模式
Swing组件的MVC设计模式 在解决一个问题时,不需要从头做起,而是参考过去的经验,设计模式是一种方法,以一种结构化的形式展示了前人的经验. 前面提到过的Java中的AWT事件处理机制采用了&quo ...
- MVC 模型-视图-控制器
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Mode ...
- python设计模式之模型-视图-控制器模式
python设计模式之模型-视图-控制器模式 关注点分离( Separation of Concerns, SoC)原则是软件工程相关的设计原则之一. SoC原则背后的思想是将一个应用切分成不同的部分 ...
- python设计模式【8】-模型·视图·控制器-复合模式
UML类图简介 设计模式的分类 面向对象的设计原则 python设计模式[1]-单例模式 python设计模式[2]-工厂模式 python设计模式[3]-门面模式 python设计模式[4]-代理模 ...
- 雷林鹏分享:Redis 管道技术
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响 ...
- Qt - 模型/视图编程(MVC编程自定义模型)
模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储.处理及显示.MVC(Model-View-Controller)包括了3个组件:模型(Model)是应用对象,用来表示数据:视图(View ...
- 雷林鹏分享:jQuery EasyUI 数据网格 - 创建属性网格
jQuery EasyUI 数据网格 - 创建属性网格 属性网格(property grid)带有一个内置的 expand(展开)/collapse(合并) 按钮,可以简单地为行分组.您可以简单地创建 ...
最新文章
- Linux上 Can‘t connect to X11 window server using XX as the value of the DISPLAY 错误解决方法
- Redis 分布式方案
- 交互设计精髓_设计空间的精髓
- 聚焦openEuler Summit,解锁云原生、开源等领域的实践干货
- win8 打开计算机配置,win8.1 更改电脑配置无法使用
- php分页类 seo,哪种分页url对seo友好?
- 关于AOP的几个问题
- 无线路由器破解教程-CDlinux(by 星空武哥)
- Manjaro/Arch 软件配置安装
- Vue 技术栈 教你玩坏 v8引擎 吃透 js 内存回收机制
- mac系统修改idea运行内存
- 一文带你由浅入深Netty异步非阻塞世界
- 函数式编程 freecodecamp
- JPEG图像格式解析
- 前端JS常见树——Tree
- EDA项目 出租车计价器 赏析
- 智能卡 7816协议【转】
- anthony1314的数论小基础
- Java萝卜影视4.0.5源码【完美修复完整版】
- 瑞云Rayvision渲染平台能使《超能陆战队》这样的大片节约一半渲染时间!