<?php namespace Knp\Bundle\GaufretteBundle\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; /** * Compiler pass that registers the adapter factories * * @author Antoine Hérault <antoine.herault@gmail.com> */ class AdapterFactoryManagerPass implements CompilerPassInterface { public function process(ContainerBuilder $container) { if (!$container->hasDefinition('knp_gaufrette.adapter_factory_manager')) { return; } $definition = $container->getDefinition('knp_gaufrette.adapter_factory_manager'); $calls = $definition->getMethodCalls(); $definition->setMethodCalls(array()); foreach ($container->findTaggedServiceIds('gaufrette.adapter_factory') as $id => $attributes) { if (!empty($attributes['type'])) { $definition->addMethodCall('set', array($attributes['type'], new Reference($id))); } } $definition->setMethodCalls(array_merge($definition->getMethodCalls(), $calls)); } }