Agora que você entende o que é o service manager, não deve ser muito difícil para você aprender o conceito de Gerenciamento de plugins. Um gerenciador de plug-ins é quase o mesmo que o service manager, mas pode instanciar serviços apenas do tipo único. Qual tipo de plugin um gerenciador de plugins pode ser codificado e instanciado dentro da classe do gerenciador de plugins.
Por que você precisaria de tal coisa? Na verdade, no ZF3, os gerenciadores de plug-ins são amplamente utilizados, porque permitir instanciar um plug-in somente quando necessário (isso reduz o uso da CPU e da memória). Existe um gerenciador de plug-ins separado para:
Zend\Mvc\Controller\ControllerManager
)Zend\Mvc\Controller\PluginManager
)Zend\View\HelperPluginManager
)Zend\Form\FormElementManager\FormElementManagerV3Polyfill
)Zend\Filter\FilterPluginManager
)Zend\Validator\ ValidatorPluginManager
)O fato de cada gerenciador de plugins herdar da base a classe Zend\ServiceManager\ServiceManager
permite que todos os gerenciadores de plugin tenham configuração similar. Por exemplo, os controllers são
registrado sob a chave controllers
no arquivo module.config.php, e esta chave pode ter as mesmas subchaves:
services, invokables, factories, abstract_factories e aliases. A mesma estrutura tem o
view_helpers chave que é usada para registrar helpers de visualização, a chave controller_plugins que é usada
para registrar plugins do controllers e assim por diante.