1

您如何处理 Zend Framework 中模块之间的依赖关系以创建可重用的插入式模块?

例如,我有Newsletter 模块,它允许用户订阅,提供电子邮件地址。

接下来,我计划添加Blog 模块,它允许通过电子邮件订阅帖子(它显然复制了时事通讯的某些功能,但电子邮件地址存储在 User 模型中)。下一个是论坛模块,具有相同的订阅帖子功能。

但我希望能够独立使用这些模块,即单独使用时事通讯的应用程序、带有博客的时事通讯、同时组合两个或三个模块。

这很常见,例如具有搜索功能的相同故事。我想要一个搜索模块,如果可用,可以选择在所有数据、博客数据或论坛数据中进行搜索。

这有什么设计模式吗?
我是否必须moduleExists($moduleMame)为每个模块添加一些类似的,或者提供一些接口或抽象类,一些基本控制器模式?

4

1 回答 1

1

我可能会使用某种依赖注入容器模式在应用程序初始化时将模块注册到容器中。然后,您可以加载模型并确保它们具有所有适当的依赖项。

对于订阅功能,我将在一个更抽象的库中创建一个通用订阅模型,每个模块可以在需要时通过通用 API 使用该模型。

在搜索功能知道要搜索哪些其他模块的情况下:通过容器加载搜索模型时,容器可以通知搜索模型注册的模块要搜索。

破解它并将已注册的模块存储在注册表中以供搜索等常用模块访问可能更容易,但使用 DI 容器将被证明是解决许多类似问题的好模式。

于 2010-04-18T03:14:40.673 回答