跨模块通信

时间:2010-02-18 16:17:10

标签: php module

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

通常,保持这些模块分离不是问题,但是通常会产生其他组件需要来自用户管理模块的数据。

这些客户端模块可以了解用户模块的内部类等,这通常不太理想,这让我想到了如何最好地构建这种跨模块通信的问题。

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

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

提前致谢, 詹姆斯

3 个答案:

答案 0 :(得分:2)

您可以将用户模块称为“库”。此术语更改有助于阐明哪些模块应该是顶级模块,哪些模块管理旨在由多个其他模块使用的较低级别的活动。 CodeIgniter PHP framework使用此方法。

答案 1 :(得分:0)

嗯,“模块”非常模糊 - 究竟什么定义模块可能因系统而异。

我实际上对你想要避免的场景类型感到困惑。对于两个类或一组类来说,彼此进行通信并不罕见。这就是我们首先拥有类似界面的原因。

我想在您的场景中,您可以在模块之间拥有类似控制器的类(如在MVC中的C),这些类可以了解每个模块的内核并且可以充当通信桥。

答案 2 :(得分:0)

您可能想要阅读“依赖注入”。 Symfony Components提供了依赖注入的解决方案,并且在该主题上有很多好的阅读/示例。