我一直试图找出是否可以将MVC架构应用于程序,以及如何将其实现到我的代码中。根据我的理解,MVC基本上代表了业务逻辑,表示层和其他逻辑的分离,尽管它似乎总是针对OO-PHP。
您能否推荐在程序上下文中处理MVC的最佳方法?
感谢。
答案 0 :(得分:11)
是的,关于总结MVC ...但它不一定是面向对象的...你只需要遵循一些黄金规则:
除此之外,你可以随心所欲地做事。您基本上需要一组过程来充当控制器 - 解析$_REQUEST
变量(更可能是GET / POST / COOKIE)执行任何数据查找构建+填充模型,然后另一组过程作为控制器视图 - 获取模型中的内容并为用户呈现它。模型可以像关联数组一样简单。
答案 1 :(得分:11)
MVC是OO模式,你想用程序上下文来处理它。
这是完全错误的。 MVC与面向对象编码无关。
MVC是一种软件架构模式,旨在将信息的表示与用户与其的交互分开。
你如何实现这取决于你。你可以使用你想要的任何编码形式,面向对象,程序,功能,以及什么不能实现。
关于手头的问题:在编写过程PHP时,实现MVC模式的最简单方法是使用许多小函数,其中每个特定函数都有自己独特的任务。不要让一个函数有很多任务。这样就更容易分开。也不要在同一个文件中保留很多功能。而是将相关的函数一起收集在较小的组中,每个组在其自己的文件中(实际上在OO中使用类完成)。
有人在这里做了一个简单的例子,没有OO的MVC:http://www.fluffycat.com/PHP-Design-Patterns/Non-OO-MVC/
答案 2 :(得分:1)
绝对。使用以下任意组合:
任何按照模型,视图和控制器的方式组织代码的东西。它可能不是纯粹的"或"纠正" MVC在一些人的心目中...但如果它更有意义地组织你的程序代码或者教你更多关于MVC的知识,那么它就是一件好事。
答案 3 :(得分:0)
这有点奇怪。 MVC是OO模式,您希望使用过程上下文来处理它。
我想到的第一件事就是拥有某种模板引擎,以便将PHP从HTML代码中分离出来。这将是向程序MVC迈出的一大步:)
接下来要命名同一组的函数(即包含相关对象逻辑的函数)和前缀(就像在类名下对方法进行分组)。
例如 - 查看用于处理mysql的PHP过程函数:
mysql_connect()
mysql_real_escape_string();
mysql_select_db();
mysql_query();
等。 并将这些功能分组到不同的文件中。这也有助于解耦一些逻辑。
如果还有其他事情发生,我会编辑我的帖子:)
答案 4 :(得分:0)
如果您正在实施新的设计模式,则很可能是从头开始重构或编写内容。如果您打算使用MVC,我强烈建议您转到OOP。它可以在程序上实现,但是非常hackish并且不是一个好的解决方案。
有几种免费的MVC php解决方案,您可以轻松获取。以下是一些: