Php 跨模块通信

Php 跨模块通信,php,module,Php,Module,很简单,将应用程序的各个部分组合到适当的模块中当然是很有意义的 通常,保持这些模块的解耦不是问题,但它通常会导致其他组件需要来自用户管理模块的数据 根据正常原则,这些客户机模块对用户模块的内部类等的了解远远不够理想,这就引出了如何最好地构建这种跨模块通信的问题 到目前为止,我的想法是一个模块可以有一个常规命名的API类,其他模块可以通过该类“查询”该模块。这种方法仍然会导致某种依赖性,但至少只能依赖于其他模块/其API 您对此的想法将受到极大欢迎 提前感谢,, James好吧,“模块”是非常模糊

很简单,将应用程序的各个部分组合到适当的模块中当然是很有意义的

通常,保持这些模块的解耦不是问题,但它通常会导致其他组件需要来自用户管理模块的数据

根据正常原则,这些客户机模块对用户模块的内部类等的了解远远不够理想,这就引出了如何最好地构建这种跨模块通信的问题

到目前为止,我的想法是一个模块可以有一个常规命名的API类,其他模块可以通过该类“查询”该模块。这种方法仍然会导致某种依赖性,但至少只能依赖于其他模块/其API

您对此的想法将受到极大欢迎

提前感谢,, James

好吧,“模块”是非常模糊的——确切地说,模块的定义可能因系统而异

事实上,我很困惑你到底想避免什么样的情况。两个班或两组班相互交流并不少见。这就是为什么我们首先要有接口之类的东西


我猜在您的场景中,您的模块之间可能会有一个类似控制器的类(如MVC中的C),该类可以了解每个模块的本质,并充当通信桥梁。

您可以将用户模块称为“库”。此术语更改有助于澄清哪些模块应该是顶级的,哪些模块管理多个其他模块打算使用的较低级别的活动。使用这种方法。

您可能想了解一下“依赖注入”。为依赖注入提供了一个解决方案,并且有很多关于这个主题的好的阅读/示例。

对于这个模棱两可的问题,很抱歉!这实际上是MVC模式的一个简单实现,模块封装(通过物理目录)其必要的MV和C组件。我最原始的问题是模块X中的控制器如何与模块Y中的模型通信?在这种情况下,我会让X中的模型自己从Y加载模型。控制器不需要管理这种通信。就保持模块之间的解耦而言,Summer上面的建议对我来说似乎是明智的。我认为两者的结合会很好。你会同意吗?谢谢你的意见。我曾简要地考虑过一些基于DI容器的解决方案,但要正确地做到这一点,需要数据映射器控制器X依赖于符合某种类型的hintable接口,然后问题是这个接口应该位于应用程序/模块生态系统中的何处(希望有意义?