$ php composer.phar require yokai/dependency-injection
<?php
namespace AppBundle;
use Yokai\DependencyInjection\CompilerPass\ArgumentRegisterTaggedServicesCompilerPass;
use Yokai\DependencyInjection\CompilerPass\AdderRegisterTaggedServicesCompilerPass;
use Yokai\DependencyInjection\CompilerPass\SetterRegisterTaggedServicesCompilerPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AppBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
$container
->addCompilerPass(
new ArgumentRegisterTaggedServicesCompilerPass(
'some_service_id',
'some_tag_name',
'An\Optional\Interface\To\Check',
0
)
)
->addCompilerPass(
new AdderRegisterTaggedServicesCompilerPass(
'some_service_id',
'some_tag_name',
'An\Optional\Interface\To\Check',
'addDependency'
)
)
->addCompilerPass(
new SetterRegisterTaggedServicesCompilerPass(
'some_service_id',
'some_tag_name',
'An\Optional\Interface\To\Check',
'setDependencies'
)
)
;
}
}
This compiler pass will :
- check for the service (first argument) existence (throw
LogicException
if not) - find services tagged with tag (second argument)
- if provided, check every service against an interface (third argument) (throw
LogicException
if not) - sort these references base on a
priority
attribute - replace an argument (fourth argument) of your service definition with the sorted references
This compiler pass will :
- check for the service (first argument) existence (throw
LogicException
if not) - find services tagged with tag (second argument)
- if provided, check every service against an interface (third argument) (throw
LogicException
if not) - sort these references base on a
priority
attribute - call a method (fourth argument) for each sorted references
This compiler pass will :
- check for the service (first argument) existence (throw
LogicException
if not) - find services tagged with tag (second argument)
- if provided, check every service against an interface (third argument) (throw
LogicException
if not) - sort these references base on a
priority
attribute - call a method (fourth argument) with all sorted references
License can be found here.
The bundle was originally created by Yann Eugoné. See the list of contributors.