Skip to content

Provide util classes to manipulate Dependency Injection in Symfony

License

Notifications You must be signed in to change notification settings

yokai-php/dependency-injection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dependency Injection

Installation

$ php composer.phar require yokai/dependency-injection

Compiler Pass

<?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'
                )
            )
        ;
    }
}

ArgumentRegisterTaggedServicesCompilerPass

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

AdderRegisterTaggedServicesCompilerPass

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

SetterRegisterTaggedServicesCompilerPass

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

MIT License

License can be found here.

Authors

The bundle was originally created by Yann Eugoné. See the list of contributors.

About

Provide util classes to manipulate Dependency Injection in Symfony

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages