我可以将MVC设计模式应用于Procedural PHP

Dan*_*est 13 php model-view-controller design-patterns

我一直试图找出是否可以将MVC架构应用于程序,以及如何将其实现到我的代码中.根据我的理解,MVC基本上代表了业务逻辑,表示层和其他逻辑的分离,尽管它似乎总是针对OO-PHP.

你能推荐一个在程序上下文中接近MVC的最佳方法吗?

谢谢.

小智 12

MVC是OO模式,您希望使用过程上下文来处理它.

这是完全错误的.MVC与面向对象编码无关.

MVC是一种软件架构模式,旨在将信息的表示与用户与其的交互分开.

你如何实现这一点取决于你.您可以使用您想要的任何编码形式,面向对象,程序,功能以及不需要的任何编码形式来实现.

关于手头的问题:在编写过程PHP时,实现MVC模式的最简单方法是使用许多小函数,其中每个特定函数都有自己独特的任务.不要让一个函数有很多任务.这样就更容易分开.也不要在同一个文件中保留很多功能.而是将相关的函数一起收集在较小的组中,每个组在其自己的文件中(实际上在OO中使用类完成).

有人在这里做了一个简单的例子,没有OO的MVC:http://www.fluffycat.com/PHP-Design-Patterns/Non-OO-MVC/


Rud*_*udu 11

是的,关于总结MVC ...但它不一定是面向对象的......你只需要遵循一些黄金规则:

  1. 控制器接收并处理输入,生成任何数据并将其放入模型中.
  2. 视图从模型中获取数据并呈现它.
  3. 控制器不应该为视图格式化数据 - 它应该不知道视图需要的方式/原因/内容(例如,由于输出可能是JSON,因此不会在文本字符串中插入HTML)
  4. 视图不应查找任何数据本身 - 如果它不在模型中,则控制器在其作业中失败(抛出/报告错误).

除此之外,你可以随心所欲地做事.您基本上需要一组程序来充当控制器 - 解析$_REQUESTvars(更可能是GET/POST/COOKIE)执行任何数据查找构建+填充模型,然后另一组程序作为视图 - 采取什么在模型并为用户呈现它.模型可以像关联数组一样简单.

  • 绝对.设计模式只不过是一种模式.你可以在任何范例中实现它...... + 1 (3认同)
  • 只要每个`.php`页面都有一个控制器调用(它什么都不输出),然后一个视图调用就没有理由你不能把它拆分成单独的页面. (2认同)