如何在不编辑的情况下操作其他模块?与wordpress模块完全相同的事情。 他们在不改变核心代码的情况下为核心系统添加功能,并且它们像魅力一样协同工作。
我一直想知道如何在我自己的模块化应用程序中实现它
答案 0 :(得分:2)
很久以前,我写了一篇博文“在Zend Framework 2中使用第三方模块”专门关于扩展Zend Framework 2模块。 Bez的答案在技术上是正确的,它可能对框架更具体一些。
阅读https://juriansluiman.nl/article/117/use-3rd-party-modules-in-zend-framework-2的完整帖子,但它会为您提供以下信息:
/account/login
代替/user/login
)答案 1 :(得分:0)
这是一个很长的话题,但这里有一个简短的要点。
Zend Framework 2中的可扩展性在很大程度上依赖于组件可以互换,添加和/或替换的前提。
阅读 SOLID 原则:http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
模块通常由作为一个运行良好的机器一起工作的对象组成,旨在完成一件事或一堆相关的事情,无论可能是什么。这些对象称为服务,由服务定位器/服务管理器管理。
使模块真正可扩展的一个重要方面是期望开发人员扩展类或实现某个接口,开发人员将其注册为服务。您应该提供一种定义模式,其中开发人员可以指定他想要替换的内容,和/或添加他们自己的服务 - 这就是应用程序配置的来源。
鉴于应用程序配置,您应该根据开发人员指定的选项构建您的机器也称为模块服务,即使用开发人员定义的Foo\Bar\UserService
服务作为模块中的YourModule\UserServiceInterface
等。(通常委托给服务工厂,它有机会读取应用程序配置,并在给定一组特定配置值的情况下构造适当的对象。)
修改强>
要添加,可以通过利用Zend的Zend\EventManager
组件来完成很多工作。这使您可以让开发人员自由地挂钩并聆听模块的某些操作并采取相应的行动(参见:http://en.wikipedia.org/wiki/Observer_pattern)