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)设计模式相关推荐

  1. 模型视图控制器mvc

    模型视图控制器mvc MVC就是模型 视图 控制器的缩写 视图和用户交互 通过事件导致控制器改变 控制器改变导致 模型改变 或者控制器同时改变两者 模型改变导致视图改变 或者视图改变 潜在的从模型里面 ...

  2. mvc 视图和模型的对应_通过在酒吧订购饮料来解释模型视图控制器(MVC)

    mvc 视图和模型的对应 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 通过在酒吧订购饮料来解释模型视图控制器(MVC) (Model-View-Contro ...

  3. java控制器_Java用户界面 模型-视图-控制器(MVC)模式

    Swing组件的MVC设计模式 在解决一个问题时,不需要从头做起,而是参考过去的经验,设计模式是一种方法,以一种结构化的形式展示了前人的经验. 前面提到过的Java中的AWT事件处理机制采用了&quo ...

  4. MVC 模型-视图-控制器

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Mode ...

  5. python设计模式之模型-视图-控制器模式

    python设计模式之模型-视图-控制器模式 关注点分离( Separation of Concerns, SoC)原则是软件工程相关的设计原则之一. SoC原则背后的思想是将一个应用切分成不同的部分 ...

  6. python设计模式【8】-模型·视图·控制器-复合模式

    UML类图简介 设计模式的分类 面向对象的设计原则 python设计模式[1]-单例模式 python设计模式[2]-工厂模式 python设计模式[3]-门面模式 python设计模式[4]-代理模 ...

  7. 雷林鹏分享:Redis 管道技术

    Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响 ...

  8. Qt - 模型/视图编程(MVC编程自定义模型)

    模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储.处理及显示.MVC(Model-View-Controller)包括了3个组件:模型(Model)是应用对象,用来表示数据:视图(View ...

  9. 雷林鹏分享:jQuery EasyUI 数据网格 - 创建属性网格

    jQuery EasyUI 数据网格 - 创建属性网格 属性网格(property grid)带有一个内置的 expand(展开)/collapse(合并) 按钮,可以简单地为行分组.您可以简单地创建 ...

最新文章

  1. Linux上 Can‘t connect to X11 window server using XX as the value of the DISPLAY 错误解决方法
  2. Redis 分布式方案
  3. 交互设计精髓_设计空间的精髓
  4. 聚焦openEuler Summit,解锁云原生、开源等领域的实践干货
  5. win8 打开计算机配置,win8.1 更改电脑配置无法使用
  6. php分页类 seo,哪种分页url对seo友好?
  7. 关于AOP的几个问题
  8. 无线路由器破解教程-CDlinux(by 星空武哥)
  9. Manjaro/Arch 软件配置安装
  10. Vue 技术栈 教你玩坏 v8引擎 吃透 js 内存回收机制
  11. mac系统修改idea运行内存
  12. 一文带你由浅入深Netty异步非阻塞世界
  13. 函数式编程 freecodecamp
  14. JPEG图像格式解析
  15. 前端JS常见树——Tree
  16. EDA项目 出租车计价器 赏析
  17. 智能卡 7816协议【转】
  18. anthony1314的数论小基础
  19. Java萝卜影视4.0.5源码【完美修复完整版】
  20. 瑞云Rayvision渲染平台能使《超能陆战队》这样的大片节约一半渲染时间!

热门文章

  1. java mkdir()和mkdirs()区别
  2. 直设计map.html页面,map4.html
  3. 「2017 山东一轮集训 Day6」子序列(矩阵快速幂)
  4. [TJOI2009] 战争游戏
  5. Spring MVC重定向和转发
  6. 2017-03-01 Oracle10g的安装与配置使用
  7. Android的布局
  8. C#时常需要调用C++DLL
  9. 大型网站的架构设计问题—-大型高并发高负载网站的系
  10. Python学习笔记之While循环(一)