【问题标题】:Designing/Implementing MVC from Scratch [duplicate]从头开始设计/实现 MVC [重复]
【发布时间】:2011-01-16 13:51:34
【问题描述】:

我想使用 HTML、MySQL、PHP 和模型视图控制器创建我的第一个 Web 应用程序。对于初学者来说这将非常简单:几个页面允许用户向/从数据库输入/删除数据并显示数据库的内容。

但是我是 MVC 的新手,我真的希望我能找到适合像我这样的初学者的 MVC 教程,了解如何使用简单的代码示例实际实现它。我只找到了使学习曲线不必要地陡峭的高级示例。我想我必须在这里创建一个。

我的问题是,如何从头开始为一个非常简单的 Web 应用程序设计这个 MVC?如何在代码中分离模型、视图和控制器?我应该采取哪些步骤以及如何采取?如何将模型实现为业务实体类,将视图实现为 HTML,将控制器实现为将所有内容粘合在一起的脚本? (假设我对此的理解是正确的)任何人都可以推荐关于如何为像我这样的初学者实际实现 MVC 的清晰直接的教程吗? (我找不到任何)。

提前致谢。

【问题讨论】:

  • 为什么要从头开始构建?那里有很多 MVC,对于您喜欢的任何语言...
  • 感谢您的回复,我。我在维基百科上读到了。我不确定对于初学者来说真正理解 MVC 的最佳方法是什么。我可能是错的,但是以 C++ 为例,从头开始学习编写一个链表(至少一次)将教给初学者更多的东西,而不仅仅是从一开始就使用像 Boost 这样的库。不知道我的逻辑是否正确
  • 我认为在这种情况下,方法不是那么好。因为一个好的 MVC 不仅仅是概念分离。它包含了很多想法。你可以阅读这本书:apress.com/book/view/1430210079,它很好地解释了 MVC 是如何诞生的以及它究竟需要回答什么(特别是 C# MVC)

标签: php mysql html model-view-controller


【解决方案1】:

有很多框架可以帮助您解决这个问题。我会推荐使用 CakePHP,http://www.cakephp.org。它有很好的文档、庞大的社区和大量的教程!

【讨论】:

  • 请注意,当前的大多数 PHP“MVC”框架都实现了一些不是真正的 MVC。换句话说:他们错误地实现了该模式。至少 Symfony/ZF/Kohana 没有处理它。我很确定 CakePHP(我从未使用过)也没有正确实现它。
  • 感谢您的回复戴尔。我将 CakePHP 视为可用于 PHP 的众多框架之一。我现在就开始研究。只是好奇,从头开始设计 MVC 有那么难吗?再次感谢您推荐 CakePHP
  • @Crozin,感谢您的回复。您是如何学习 MVC 的:从头开始还是从框架开始?哪个对初学者更有利?如果有的话,你会推荐哪个框架?感谢您的洞察力
  • @dale,CakePHP 看起来很有趣
  • @dale,到目前为止,CakePHP 的文档看起来不错
【解决方案2】:

第一次做 MVC 时,不要从头开始。 CakePHP 是 Dale 推荐的一个非常好的开始。当您多次完成并了解 MVC 是什么时,您将能够在没有框架的情况下实现 MVC。

【讨论】:

  • 感谢您的回复@sibidiba。从您的回复来看,MVC 听起来很复杂,尤其是对于初学者而言。我是 PHP 新手。当我想到这个 MVC 时,我会考虑 C++ 类以及如何模块化我的代码以分离这 3 个部分。是的,到目前为止,我喜欢文档,已经登录 IRC 聊天,我迫不及待想看看 CakePHP 是什么样的。
  • MVC 一点也不复杂。我想你已经知道它的概念了。但是使用和实现 MVC 框架是不同的。对于后者,您必须深入了解 MVC 的概念,以及您正在使用的语言以及典型的使用场景。永远不要从头开始,除非你真的,真的必须这样做。认为没有任何经验的代码会更好、更干净、更实用,然后是数十位经验丰富的程序员经过良好测试的代码,这是每个程序员(包括我)经常犯的错误。
  • 对于 CakePHP,这是一个很好的资源:@​​987654321@ 而这个:api13.cakephp.org/classes 我真正喜欢 CakePHP 的东西,它非常简单,当你使用它时,你可以很容易地查看它的源代码不确定它是如何工作的。
【解决方案3】:

没有捷径可走。

如果您真的想构建 MVC,请查看一些现有的。阅读他们的文档并尝试了解他们做出某些选择的原因(安全性、稳健性等)。

您会发现 here 是现有 MVC 的一个很好的列表。

【讨论】:

  • @Am,我正在阅读 CakePHP,它看起来很有趣。
【解决方案4】:

了解 MVC 工作原理的好教程是 this one。它向您展示了如何从头开始创建框架,但如果您想做更复杂的事情,我建议您使用现有的框架。

【讨论】:

  • @eduardoks,感谢您的回复和链接。我先是一头扎进 CakePHP,当我准备好后,我会花时间尝试自己创建 MVC。
【解决方案5】:

我认为 symfony2 将是一个正确的选择,因为它的代码库非常广泛,而且它的企业级扩展比 Zend 框架更强大......

【讨论】:

  • 对不起 v.v.迟到的回复...
  • +1 不用担心。谢谢回复。目前,我正在使用 CodeIgniter、Django,很快,我也会使用 Rails。我什至不想再从头开始写任何东西了。
  • 是的,你是@Anthony,对于需要快速有效解决方案的开发人员来说,从头开始编写是一项真正的痛苦和耗时的任务......
【解决方案6】:

Fwiw,由于缺少实时事件循环,所有服务器端框架(包括 PHP)都不能是原始 SmallTalk MVC 上下文中的 MVC(例如,客户端上下文)。服务器端 MVC 最接近 Smalltalk MVC 的是 Model2 (http://en.wikipedia.org/wiki/Model_2)。

【讨论】:

    【解决方案7】:

    这可能是一个很好的起点:MVC in PHP 是一个涵盖 MVC 基础知识的教程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多