Zend Framework中的插件管理器


Plugin managers in Zend Framework 2

我将编写自己的抽象工厂,类似于Zend'Log'LoggerAbstractServiceFactory。我注意到这个抽象工厂与插件管理器一起工作,但是我想知道插件管理器的目的到底是什么——无论是在一般情况下还是在这个特殊的例子中。Zend'Log命名空间包含WriterPluginManagerProcessorPluginManager等多个插件管理器,而Zend'Log'Writer命名空间包含FormatterPluginManager类。基本上,我对这些插件管理器到底是做什么的感到困惑。

我知道有几个插件管理器用于控制器插件,视图帮助器等,并且我注意到插件管理器是一个专门的服务定位器,因为Zend'ServiceManager'AbstractPluginManager类扩展了Zend'ServiceManager'ServiceManager

所以我的问题是:插件管理器的目的是什么,无论是在一般情况下,还是在Zend'Log命名空间的具体例子中?

插件管理器是一个特殊的服务管理器,它返回特定类型的服务。它们定义了一个validatePlugin()方法,用于检查服务的类型是否正确。从您给出的示例中,WriterPluginManager返回日志写入器,而ProcessorPluginManager毫无疑问返回日志处理器。

只要你的抽象工厂返回的类实现了正确的接口,你就不需要太过担心这些细节。

创建pluginManager来管理控制器插件。控制器插件对所有请求执行,例如,如果你想检查授权或日志,最好的地方是控制器插件或任何任务应该对所有请求执行。