回答
Zend Framework有自己非常好的Quick Start/Tutorial,它特别介绍MVC。从那里
报价:
那么究竟什么是这个MVC模式 大家都在谈论,为什么 要照顾吗? MVC远不止 只是一个三个字母的缩写(TLA),你可以随时随地抽出你想要的 听起来聪明;它已成为现代 网络应用程序设计中标准的 。理由很充分。 大多数网络应用程序代码都属于 以下三类之一: 演示文稿,业务逻辑和数据 访问。 MVC模式很好地模拟了这种关注的分离。结果 结果是您的演示代码 可以合并在您的应用程序的一个部分 您的业务 逻辑在另一个和您的数据访问 代码在另一个。许多开发者 已经发现这个明确定义的 分隔是必不可少的,以保持 他们的代码有组织,特别是当多个开发人员在 上工作的 相同的应用程序。
有迹象表明,给MVC的概念解释,#2其他几个问题:
概念的一个很好的解释可以上找到Wikipedia:
模型 - 视图 - 控制器(MVC)是 工程中使用的 架构模式。成功使用 图案的从 用户接口的考虑隔离的业务逻辑, 造成一个应用程序,它是 易于修改或者视觉外观 应用或 底层业务规则,而不 影响其他。在MVC中,型号 代表应用程序的信息(数据) ;视图 对应于用户界面的元素,例如文本,复选框 项目等等;并且 控制器管理数据的通信 和用于 的业务规则处理来自 模型的数据。
关于Zend框架:
- 模型一般由
Zend_Db_Table
类 - 意见表示为
*.phtml
文件在您定义的脚本文件夹的扩展,提出了这由Zend_View
类处理。 - 控制器由
Zend_Controller_Action
类的扩展定义。
在为几句话越好:
- 模型是DB
- 的观点是你所看到的(页)
- 控制器胶水(逻辑)
您的模型知道如何访问包含您的数据的表格;你的观点知道如何显示内容;和你的控制器粘在一起(我显示什么视图?我应该使用什么模型?)。
控制器更像是一个“服务孵化器”,而模型实际上包含很多逻辑。这不仅仅是数据库。访问数据库可以成为模型逻辑的一部分。 – magnetronnie 2014-10-10 11:30:39
M - 模型 - 往往是混乱的最大来源。这些是您的应用程序的一部分,它们完成所有'繁重工作' - 它们处理数据库访问,执行复杂的特定于应用程序的逻辑,并负责应用程序的大部分工作。与视图和控制器不同,Zend Framework没有模型的基类 - 这是因为他们所做的没有真正的一致性。一些框架(比如Ruby on Rails)尝试将某种数据库包装器作为Model的基础,但是有很多情况(第三方提要/ API,静态文件,非持久计算,跨多个表的概念.. ),对此,充其量只是一种误导性的做法。模型是应用程序中仍然被迫编程的部分,框架无法真正为您节省时间。
V - 视图 - 是这里最简单的组件。他们应该是简单的PHP/HTML模板。他们被赋予视图对象,数组,字符串等,然后将它们放入页面中。这里不应该有太多(如果有的话)复杂的逻辑 - 循环这些,显示这个(如果定义),斑马条纹这个表和什么。 View Helper有一些魔术(例如魔术般地呈现Zend_Form
的助手),但这对理解整个系统并不重要。
C - 控制器 - 从最广泛的意义上讲,控制器负责接收用户请求,将它们发送到Model对象并准备将模型交给Views。这是将所有东西放在一起的胶水。如果您使用的是Zend MVC,那么您需要关注2个控制器 - Zend_Controller_Front
和Zend_Controller_Action
。
Zend_Controller_Front
(如果您使用Zend_Layout::startMVC()
,您可以免费获得)是应用程序的单一入口 - 它处理原始用户请求并将URL转换为要调用的Action。有很多地方可以对此进行“插件”来处理身份验证和访问限制等问题,但核心只是前门处的“交通警察”来指导传入的请求。
Zend_Controller_Action
是动作的基类 - 本质上,Action表示应用程序执行的操作(登录,列出博客条目,启动ICBM,订购匹萨...),但不直接负责实际操作。 Action控制器非常无聊 - 它们从表单和URL中抽取值,在Model类上调用几个方法来实际执行操作并将结果推送到视图中。如前所述,它们是将模型和视图放在一起的“粘合剂”。
一个粗略的测试,看看你是否沿着正确的路线分裂东西,是想象你的网站发生重大变化。视觉重新设计将几乎完全在视图中处理。移动所有网址会改变您的控制器。从Web应用程序转换为GUI应用程序将取代视图和控制器,但您的模型仍然大部分未更改。如果你重写你的模型,你有一个全新的应用程序。
- 1. 关于java spring mvc框架
- 2. 什么是最好的ASP.NET MVC框架/架构,为什么?
- 3. 登录MVC(Zend框架)
- 4. Zend框架关系 - findDependentRowset
- 5. Zend框架表关系
- 6. 什么是基于接口的框架?
- 7. 关于Facebook分析框架,“上传符号文件”是什么?
- 8. trac基于什么框架?
- 9. JSF MVC框架中的MVC是什么组件?
- 10. 什么是学习Zend框架的好资源?
- 11. 在zend框架中ACL中的资源是什么
- 12. 是什么重定向之间的区别和Zend框架
- 13. Zend框架application.ini中的注释语法是什么?
- 14. 框架究竟是什么?就像Zend Framework for PHP
- 15. MVC优化问题框架Zend
- 16. mvc如何在Zend框架中工作
- 17. 与zend框架mvc ext错误
- 18. 什么是执行框架?
- 19. 这是什么web框架?
- 20. 什么是.NET框架
- 21. 什么是python web框架
- 22. 什么是实体框架
- 23. 什么是HTML5框架?
- 24. 什么是软件框架?
- 25. 什么是“优秀”框架?
- 26. 什么是PastryKit框架?
- 27. 什么是新框架?
- 28. 什么是MVVM框架?
- 29. 什么是onDrawFrame框架?
- 30. zend框架骨架:为什么该行需要'init_autoloader.php'工作?
几乎正确。除非你正在研究一个简单的应用程序,否则Zend_Db_Table不是模型的充分基础。查看http://codeutopia.net/blog/2008/12/06/food-for-thought-utilizing-models-in-mvc/了解更多细节。 – 2009-01-06 17:40:16