我想学习MVC"架构模式",但我还不想进入像Rails或Django这样的框架.我想首先理解这个概念,然后在我目前熟悉的环境中编写一些简单的代码,恰好是PHP/HTML/CSS/MySQL.我不一定需要一个基于PHP的教程,因为我了解很多不同的语言.我不想安装任何框架或API或库.我只是想学习如何在MVC中思考并将其应用到我的项目中.有什么建议?
几乎每个框架都以不同的方式执行MVC,因此您最终可能会变得更加困惑.MVC的一般原则非常简单:"模型是状态;视图对模型作出反应;控制器对视图作出反应;控制器改变模型".模型,视图和控制器都是概念 - 它们是您认为的任何概念.类,一串类,带有XML配置文件的类的实例,您可以为其命名.
我实际上认为这涵盖了基本原则.没有框架,你就不会得到更多.重要的是特定框架如何定义模型,视图和控制器及其交互.
MVC基本上只是将代码拆分为处理数据的Model,显示数据的View,以及将Model中的数据传递给View的Controller.
你不需要API或框架,它只是一种分解你的代码的方式.许多框架使用它的原因是因为它是一个非常简单的概念,它适用于很多东西(它非常适合网页),而且相当灵活(例如,使用Rails,你可以在你的视图中做任何事情,或模型/控制器) ,如果你这么想..)
一个示例MVC结构化Python脚本的python示例.不一定是"最佳实践",但它有效,而且非常简单:
class Model: def get_post(self, id): # Would query database, perhaps return {"title": "A test", "body": "An example.."} class Controller: def __init__(self): self.model = Model() self.view = View() def main(self): post = self.model.get_post(1) self.view.display(post) class View: def display(self, item): print "%(title)s
\n%(body)s" % item c = Controller() c.main()
其中一个最有趣的资源是Trygve Reenskaug 的原始论文.维基百科还有很多与MVC无关的语言信息.
除了Sander的回复之外,我会说大多数框架都混淆了前端控制器和MVC.它们实际上是两个完全独立的概念,但它们通常都存在于框架中.所以要小心.
查看介绍MVC基础知识的描述,示例和图表.
MVC是简单设计的绝佳设置,但它经常与PAC混淆,后者与MVC类似并进一步发展.这两个设置都很棒,两个链接提供的信息可以帮助他们理解.
不要问我怎么样,但是我从一个关于设计模式主题的优秀wiki中看到了这个条目:
http://www.c2.com/cgi-bin/wiki?ModelViewController
大量有趣的讨论和各种资源的指针.
我花了六天才找到它!