Plugins 在zend framework 2中操作其他模块功能

Plugins 在zend framework 2中操作其他模块功能,plugins,frameworks,wordpress,zend-framework2,modularity,Plugins,Frameworks,Wordpress,Zend Framework2,Modularity,如何在不编辑其他模块的情况下操作它们?与wordpress模块所做的事情完全相同。 它们在不改变核心代码的情况下向核心系统添加功能,并且它们像一个符咒一样协同工作 我一直想知道如何在我自己的模块化应用程序中实现这一点,这是一个很长的主题,但这里有一个简短的要点 Zend Framework 2中的可扩展性在很大程度上依赖于组件可以互换、添加和/或替换的前提 阅读有关坚实的原则: 模块通常由对象组成,作为一个润滑良好的机器一起工作,设计用于完成一件事情或一系列相关的事情,不管是什么。这些对象称为服

如何在不编辑其他模块的情况下操作它们?与wordpress模块所做的事情完全相同。 它们在不改变核心代码的情况下向核心系统添加功能,并且它们像一个符咒一样协同工作


我一直想知道如何在我自己的模块化应用程序中实现这一点,这是一个很长的主题,但这里有一个简短的要点

Zend Framework 2中的可扩展性在很大程度上依赖于组件可以互换、添加和/或替换的前提

阅读有关坚实的原则:

模块通常由对象组成,作为一个润滑良好的机器一起工作,设计用于完成一件事情或一系列相关的事情,不管是什么。这些对象称为服务,由服务定位器/服务管理器管理

使您的模块真正可扩展的一个重要方面是期望您的开发人员扩展一个类或实现一个特定的接口,开发人员将其注册为服务。您应该提供一种定义模式,其中开发人员可以指定要替换的内容,和/或向其中添加他们自己的服务,这就是应用程序配置的作用所在

给定应用程序配置,您应该根据开发人员指定的选项构造Machine a.k.a.模块服务,即使用开发人员定义的
Foo\Bar\UserService
服务作为模块内的
YourModule\UserServiceInterface
,等等。(这通常委托给服务工厂,服务工厂有机会读取应用程序配置,并在给定一组特定配置值的情况下构造适当的对象。)

编辑:


另外,利用Zend的
Zend\EventManager
组件可以实现很多功能。这允许开发人员自由地钩住和监听模块的某些操作,并相应地采取行动(请参阅:)

很久以前,我写了一篇博客文章“在Zend Framework 2中使用第三方模块”特别是关于扩展Zend Framework 2模块。Bez的回答在技术上是正确的,它可能会更具体一些

阅读网站上的完整帖子,但它会给你一个关于以下方面的线索:

  • 更改模块的路由(例如,您希望使用url
    /account/login
    ,而不是
    /user/login
  • 重写视图脚本,以便可以完全修改页面的呈现
  • 更改表单对象,以便可以添加新表单字段或将某些必填字段标记为不再必填

  • @Dante你指的是WordPress的钩子吗?@RayhanMuktader,我还没有使用WordPress代码,但经过一点搜索,我认为这就是问题所在。WordPress钩子是如何工作的,我如何在zend框架中实现它?谢谢你的回答,你的解决方案即将覆盖和更改某些部分,但我的意思是这样的向现有模块添加一些功能,而不是覆盖它们,但再次感谢您的回答,您的解决方案在某些情况下会有所帮助。@Dante如果您理解如何修改这些内容的逻辑,那么添加一些您自己的内容也很容易。例如,在第三方路由配置中放置一个新的子路由,并将其指向您自己的控制器。或者我在上面说过,向现有表单添加一些表单元素。