yokai-php / dependency-injection

Provide util classes to manipulate Dependency Injection in Symfony

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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


Languages

Language:PHP 100.0%