松散耦合的MVC的替代方案?

tko*_*tan 7 php model-view-controller design-patterns

我作为PHP程序员在网上商店工作.大多数情况下,我们使用良好的编码实践,但整个网站的结构不多.

我现在已经进入了对我们的一些实践感到厌倦的阶段,并希望以一种有用的方式扩展和简化并生成一些东西,不仅对我而言,还有办公室中的混合程序员Web开发人员.

一位员工给我们留下了一个用PHP编写的MVC网站,我不得不维护它,我得到了它的工作方式,但有我的抱怨,我的主要抱怨是它与每件依赖于另一件的紧密耦合.我看到了分离问题的优势,但除了我看代码之外,任何人都会感到困惑.

因此,例如,如果我需要向网站添加新页面,我必须添加视图,然后添加模型,然后更新控制器.制作新页面的特殊方法比这简单,并且不需要程序员.

我的判断是,这是一个更好的方法来构建,而不是维护一个网站.

不过,如果我有一些设计模式,我可以有效地重用代码,而不依赖于网站中的多个位置,那将是很好的.

所以我的问题是,是否有一种用于构建和维护更松散耦合的网站的设计模式?我不是在寻找MVC上的细微变化,我需要看一些不同的东西,也许某种类型的插件方法.

编辑:

谢谢你到目前为止的答案!一种不同的方式是我希望代码在我的办公室里做得更好.做IA)推动MVC或B)找到/构建一个替代方案,而不是让半程序员感到困惑.我们已经使用类来连接数据库连接和表单帮助.这个问题的关键是探索B.

mil*_*ose 3

代码令人困惑(因为它具有高度解构主义)和代码令人困惑(因为执行 X 所需的所有内容都随机分散在单个文件中)之间总是存在折衷方案。

后者的问题在于,将事物分割成整体模块的“直观”方式到底是什么因人而异。高度分解和分解的代码几乎总是更难以理解,但一旦你这样做了,维护就变得很容易了。我不认为这会让除了作者之外的其他人感到困惑。使用像 MVC 这样的大范围模式是因为随着时间的推移,更容易发现它们并处理围绕它们构建的项目。

使用 MVC 的另一个优点是,如果您不坚持分层,通常不会使应用程序变得更难以为您的后继者维护。这是因为现在您已经有了一个预定的位置来放置实现新功能的任何方面。

就紧密耦合而言,如果层之间没有某种连接,您就无法真正实现某个功能。松耦合并不意味着各层完全不了解彼此,而是意味着某一层应该不知道其他层是如何实现的。例如:控制器层并不关心你是使用SQL数据库还是只是编写二进制文件来在数据访问层保存数据,只关心有一个数据访问层可以为其获取和存储模型对象。它也不关心您在视图层使用原始 PHP 还是 Smarty,只是它应该使某些对象在某些预定名称下可用。一直以来,视图层甚至不需要知道有一个控制器层 - 只需用数据调用它即可在 /something/ 提供的上述名称下显示就绪。