2010-04-16 69 views
1

如何处理Zend Framework中模块之间的依赖关系以创建可重用的嵌入式模块?Zend Framework应用程序:模块依赖关系

E.g.我有时事通讯模块,它允许用户订阅,提供电子邮件 地址。下一步,我计划添加博客模块,它允许通过电子邮件订阅帖子(它明显地重复了通讯的一些功能,但电子邮件地址存储在用户模型中)。 下一个是论坛模块,具有相同的订阅发布功能。

但我想有能力独立使用这些模块,即每个人都可以独立使用这些模块,即 应用程序仅包含通讯,包含博客的时事通讯,可同时包含两个或三个模块。

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

有没有这样的设计模式?
我是否需要添加一些moduleExists($moduleMame),或者提供一些接口或 抽象类,一些基本控制器模式,对于每个模块类似?

回答

1

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

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

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

将注册模块注册并存储在注册表中可以通过常见模块(如搜索)访问,但使用DI容器证明是解决许多类似问题的良好模式可能更容易。