MVC设计是否意味着你必须将mysql与php代码分开?

时间:2013-11-27 14:22:27

标签: php oop model-view-controller mysqli

MVC真的意味着你必须分开=>查看aka design(html css)=>控制器(php代码),模型(mysql代码转换成类等)???

有没有其他选择?想知道因为我真的想避免将php代码和mysqli分开,因为它现在很容易上手(习惯了)。

4 个答案:

答案 0 :(得分:2)

是的,您肯定希望将HTML和CSS与业务逻辑分开。

大多数框架使用ORM或类似于抽象构建查询的东西,但仍然提供编写纯SQL的选项。我建议使用像doctrine2这样的ORM,例如纯SQL。如果您直接使用任何SQL,那么该模型很可能是将其放入的合适位置。

MVC的存在是有原因的,separation of concerns。这可以确保您的应用程序易于维护,因为它的每个部分都应该易于更换,而不是相互依赖。你想避免强耦合。 MVC是一种可以帮助你的模式。

就像tttpapi所说,有其他方法可以做到这一点,但老实说,我个人认为特别是Wordpress就是一个可怕的混乱。我也不喜欢Drupal或Joomla。与使用MVC模式的现代编写良好的应用程序相比,代码库感觉就像使用10年的混乱一样。

这有点关于纪律,我已经看到完全搞砸了应用程序,因为人们没有注意分离关注点而没有遵循MVC模式。

答案 1 :(得分:1)

总是取决于你。 你总能找到如何使用MVC作为nonMVC的方法。 (例如Joomla,你可以使用只包含所有代码的视图)

或者您可以使用不是MVC基础的系统,例如Drupal。

但MVC出于某些原因在这里。

答案 2 :(得分:1)

  

MVC真的意味着你必须分开=>查看又名设计(html   css)=>控制器(php代码),模型(mysql代码转换成类等)???

没有

MVC约为separation pf concerns。它将表示层与模型层分开。在表示层中 - 它将输入(控制器)的处理与输出(视图)的处理分开。

MVC中的模型不是数据库抽象或查询集合。相反,它是一个包含几组类的图层。主要群组是domain objectsdata mappersservices。 MVC中的模型就是所有这些东西。

更长的解释:here

  

注意:不要将MVC的模型与domain model混淆,后者是特定应用程序的累积知识和词汇。域模型中可以包含在代码中的部分是使用域对象实现的。

查看不是html和css。 MVC中的视图是包含应用程序的UI逻辑的类。从模型层获取数据,然后根据此信息选择用于生成响应的模板。

更长的解释:here

控制器不是一些神秘的“PHP代码”。它们是接受用户输入的应用程序的一部分,并基于它改变模型层的状态和(在极少数情况下)当前视图的状态。

  

有没有其他选择?想知道,因为我真的很想   避免将PHP代码和mysqli分开,因为它现在太容易了   努力工作(习惯了)。

关键是不要将SQL与PHP分开。

separation of concerns原则只是意味着应用程序的每个部分都应该处理一个特定的方面。

而且,如果你试图实现MVC架构,它并不意味着你将sql与php分开,而是将业务逻辑与持久性逻辑分开。这两个都是用PHP编写的。但诀窍是 - MySQL不是唯一的存储形式。数据也可以存储在会话,缓存,noSQL,文件,SOAP等中。如果您将业务逻辑与持久性逻辑分开,那么您可以在不重写整个事物的情况下向现有应用程序添加缓存。

另外......

还有更多架构,只有MVC和Big Ball of Mud(由谈论Drupal和Joomla的人做广告)。

您有MVPMVVMn-TierDCIEDA等等。所有这些都将遵循SoC原则......但他们提出的结果将是不同的。

  

P.S。:如果您真的想了解MVC,我建议您开始浏览this list的资料。它将首先介绍简单的概念,然后逐步构建您必须掌握的想法才能真正开始使用MVC。

答案 3 :(得分:0)

要直接回答你的问题,是的MVC就是这个意思。 然而,MVC只是一种设计模式,而不是神圣的文字。

您可以使用许多变体。我自己最初认为MVC是限制性的和令人困惑的,但事实上,我选择的特定的基于MVC的框架存在这些缺陷。

有许多轻量级,灵活的框架可用。看一下https://github.com/bcosca/fatfree作为一个很好的例子,特别是数据库部分。你不会认为mysqli比较简单