MVC真的意味着你必须分开=>查看aka design(html css)=>控制器(php代码),模型(mysql代码转换成类等)???
有没有其他选择?想知道因为我真的想避免将php代码和mysqli分开,因为它现在很容易上手(习惯了)。
答案 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 objects,data mappers和services。 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的人做广告)。
您有MVP,MVVM,n-Tier,DCI,EDA等等。所有这些都将遵循SoC原则......但他们提出的结果将是不同的。
P.S。:如果您真的想了解MVC,我建议您开始浏览this list的资料。它将首先介绍简单的概念,然后逐步构建您必须掌握的想法才能真正开始使用MVC。
答案 3 :(得分:0)
要直接回答你的问题,是的MVC就是这个意思。 然而,MVC只是一种设计模式,而不是神圣的文字。
您可以使用许多变体。我自己最初认为MVC是限制性的和令人困惑的,但事实上,我选择的特定的基于MVC的框架存在这些缺陷。
有许多轻量级,灵活的框架可用。看一下https://github.com/bcosca/fatfree作为一个很好的例子,特别是数据库部分。你不会认为mysqli比较简单