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


Does MVC design means you have to separate mysql from php code?

MVC真的意味着你必须分离=>View aka design(html css)=>controler(php代码),model(mysql代码到类等)吗???

难道没有其他选择吗?我很想知道,因为我真的很想避免将php代码和mysqli分离,因为现在处理它太容易了(已经习惯了)。

是的,您肯定希望将HTML和CSS从业务逻辑中分离出来。

大多数框架使用ORM或类似于抽象构建查询的东西,但仍然可以选择编写纯SQL。例如,我建议在纯SQL上使用类似于ORM的doctrine2。如果您直接使用任何SQL,那么模型很可能是将其放入其中的正确位置。

MVC的存在是有原因的,关注点的分离。这可以确保您的应用程序变得易于维护,因为它的每个部分都应该易于替换,而不需要太多地相互依赖。您希望避免强耦合。MVC是一种可以帮助你做到这一点的模式。

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

这是关于规程的一点,我也看到过完全混乱的应用程序,因为人们没有注意到关注点的分离,也没有遵循MVC模式。

MVC真的意味着你必须分开吗=>View aka design(htmlcss)=>controler(php代码),model(mysql代码到类等)???

没有。

MVC是关于关注点的分离。它将表示层与模型层分离。在表示层中,它将输入(控制器)的处理与输出(视图)的处理分离开来。

MVC中的模型不是数据库抽象或查询集合。相反,它是一个包含多组类的层。主要的组是域对象、数据映射器和服务。MVC中的模型是所有这些东西结合在一起的。

更长的解释:此处

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

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

更长的解释:此处

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

难道没有其他选择吗?想知道,因为我真的很想避免分离php代码和mysqli,因为现在很容易努力(习惯)。

重点不是将SQL与PHP分开。

关注点分离原则只是意味着应用程序的每个部分都应该处理一个特定的方面。

而且,如果您尝试实现MVC体系结构,这并不意味着将sql与php分离,而是将业务逻辑与持久性逻辑分离。这两者都将用PHP编写。但诀窍在于MySQL并不是唯一的存储形式。数据也可以存储在会话、缓存、noSQL、文件、SOAP等中。如果您已经将业务逻辑与持久性逻辑分离,那么您可以在不重写整个内容的情况下向现有应用程序添加缓存。

此外。。。

除了MVC和Big Ball of Mud(这是Drupal和Joomla的广告)之外,还有更多的架构。

您有MVP、MVVM、n-Tier、DCI、EDA和许多其他产品。所有这些都将遵循SoC原则。。但他们得出的结果会有所不同。

附言:如果你真的想了解MVC,我建议你开始浏览这个列表中的材料。它将从简单概念的介绍开始,逐渐形成你必须掌握的想法,才能真正开始使用MVC。

一切由您决定。你们总能找到如何将MVC作为非MVC使用的方法。(这里的例子是Joomla,你可以只使用视图中的所有代码)

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

但是MVC出现在这里有一些原因。

要直接回答您的问题,是的,MVC正是这个意思。然而,MVC只是一种设计模式,而不是神圣的令状。

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

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