Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns Zend框架应用程序:模块依赖关系_Design Patterns_Zend Framework_Architecture_Modularity - Fatal编程技术网

Design patterns Zend框架应用程序:模块依赖关系

Design patterns Zend框架应用程序:模块依赖关系,design-patterns,zend-framework,architecture,modularity,Design Patterns,Zend Framework,Architecture,Modularity,如何处理Zend Framework中模块之间的依赖关系以创建可重用的插入式模块 例如,我有通讯模块,允许用户订阅,提供电子邮件 地址 接下来,我计划添加Blog模块,它允许通过电子邮件订阅帖子(它显然复制了时事通讯的一些功能,但电子邮件地址存储在用户模型中)。 下一个是论坛模块,具有相同的订阅帖子功能 但我希望能够独立于每个模块使用这些模块,即。 单独使用时事通讯,时事通讯和博客,同时使用两三个模块 这是很常见的,例如,具有搜索功能的相同故事。我想要 搜索模块,可选择搜索所有数据、博客数据或论

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

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

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

但我希望能够独立于每个模块使用这些模块,即。 单独使用时事通讯,时事通讯和博客,同时使用两三个模块

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

这有什么设计模式吗?
我必须添加一些
模块存在($moduleName)
,还是提供一些接口或
抽象类,一些基本控制器模式,每个模块都类似?

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

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

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


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

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

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

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

对其进行黑客攻击并将注册模块存储在注册表中以供搜索等常见模块访问可能会更容易,但使用DI容器将被证明是解决许多类似问题的好模式