我将编写自己的抽象工厂,类似于Zend'Log'LoggerAbstractServiceFactory
。我注意到这个抽象工厂与插件管理器一起工作,但是我想知道插件管理器的目的到底是什么——无论是在一般情况下还是在这个特殊的例子中。Zend'Log
命名空间包含WriterPluginManager
和ProcessorPluginManager
等多个插件管理器,而Zend'Log'Writer
命名空间包含FormatterPluginManager
类。基本上,我对这些插件管理器到底是做什么的感到困惑。
我知道有几个插件管理器用于控制器插件,视图帮助器等,并且我注意到插件管理器是一个专门的服务定位器,因为Zend'ServiceManager'AbstractPluginManager
类扩展了Zend'ServiceManager'ServiceManager
。
所以我的问题是:插件管理器的目的是什么,无论是在一般情况下,还是在Zend'Log
命名空间的具体例子中?
插件管理器是一个特殊的服务管理器,它返回特定类型的服务。它们定义了一个validatePlugin()
方法,用于检查服务的类型是否正确。从您给出的示例中,WriterPluginManager
返回日志写入器,而ProcessorPluginManager
毫无疑问返回日志处理器。
只要你的抽象工厂返回的类实现了正确的接口,你就不需要太过担心这些细节。
创建pluginManager来管理控制器插件。控制器插件对所有请求执行,例如,如果你想检查授权或日志,最好的地方是控制器插件或任何任务应该对所有请求执行。