This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/src/Symfony/Component/DependencyInjection
Christophe Coevoet 8425e4d9d0 Unify the way to provide expression functions for the DI container
Function providers registered on the ContainerBuilder are now reused by
the PhpDumper when dumping the container instead of forcing to register
them again.
Closes #13012
2014-12-17 10:56:43 +01:00
..
Compiler Merge branch '2.5' into 2.6 2014-12-05 13:00:15 +01:00
Dumper Unify the way to provide expression functions for the DI container 2014-12-17 10:56:43 +01:00
Exception [DependencyInjection] fixed ? position in some exception messages (refs #7861) 2013-05-01 06:24:56 +02:00
Extension Docblock fixes 2014-11-30 13:33:44 +00:00
LazyProxy made {@inheritdoc} annotations consistent across the board 2014-04-16 09:04:20 +02:00
Loader Merge branch '2.5' 2014-11-03 04:55:50 +01:00
ParameterBag Merge branch '2.3' into 2.5 2014-12-02 21:15:53 +01:00
Tests Merge branch '2.5' into 2.6 2014-12-12 17:21:40 +01:00
.gitignore Added missing files .gitignore 2013-07-21 14:12:18 +02:00
Alias.php Docblock fixes 2014-11-30 13:33:44 +00:00
CHANGELOG.md added a new Syntax to define factories as callables. 2014-09-24 08:27:41 +02:00
composer.json [2.6] Test lowest versions of dependencies 2014-12-16 19:41:39 +01:00
Container.php Merge branch '2.5' into 2.6 2014-12-02 21:19:20 +01:00
ContainerAware.php [DependencyInjection] made ContainerAware class abstract. 2012-05-30 09:01:58 +02:00
ContainerAwareInterface.php [FramworkBundle] fix phpdoc of commands 2013-03-07 14:36:36 +01:00
ContainerAwareTrait.php Remove executable bit on PHP file 2013-11-19 14:48:58 +01:00
ContainerBuilder.php Unify the way to provide expression functions for the DI container 2014-12-17 10:56:43 +01:00
ContainerInterface.php Docblock fixes 2014-11-30 13:33:44 +00:00
Definition.php Merge branch '2.5' into 2.6 2014-12-02 21:19:20 +01:00
DefinitionDecorator.php Merge branch '2.5' into 2.6 2014-12-02 21:19:20 +01:00
ExpressionLanguage.php [Security] added support for custom expression language functions 2014-09-25 19:08:39 +02:00
ExpressionLanguageProvider.php [DependencyInjection] added support for custom expression language functions 2014-09-25 19:08:38 +02:00
IntrospectableContainerInterface.php Docblock fixes 2014-11-30 13:33:44 +00:00
LICENSE update year on licenses 2014-01-07 08:19:25 -05:00
Parameter.php [DependencyInjection] tagged the public @api 2011-07-20 10:50:27 +02:00
phpunit.xml.dist removed defaults from PHPUnit configuration 2014-07-07 12:13:42 +02:00
README.md Merge branch '2.5' 2014-10-01 07:53:11 +02:00
Reference.php Merge branch '2.3' into 2.5 2014-12-02 21:15:53 +01:00
Scope.php updated license blocks 2012-03-31 18:00:32 -03:00
ScopeInterface.php fixed CS 2012-07-09 14:54:20 +02:00
SimpleXMLElement.php Merge branch '2.3' into 2.5 2014-12-02 21:15:53 +01:00
TaggedContainerInterface.php fixed CS 2012-07-09 14:54:20 +02:00
Variable.php fixed CS 2011-06-08 12:16:48 +02:00

DependencyInjection Component

DependencyInjection manages your services via a robust and flexible Dependency Injection Container.

Here is a simple example that shows how to register services and parameters:

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;

$sc = new ContainerBuilder();
$sc
    ->register('foo', '%foo.class%')
    ->addArgument(new Reference('bar'))
;
$sc->setParameter('foo.class', 'Foo');

$sc->get('foo');

Method Calls (Setter Injection):

$sc = new ContainerBuilder();

$sc
    ->register('bar', '%bar.class%')
    ->addMethodCall('setFoo', array(new Reference('foo')))
;
$sc->setParameter('bar.class', 'Bar');

$sc->get('bar');

Factory Class:

If your service is retrieved by calling a static method:

$sc = new ContainerBuilder();

$sc
    ->register('bar', '%bar.class%')
    ->setFactory(array('%bar.class%', 'getInstance'))
    ->addArgument('Aarrg!!!')
;
$sc->setParameter('bar.class', 'Bar');

$sc->get('bar');

File Include:

For some services, especially those that are difficult or impossible to autoload, you may need the container to include a file before instantiating your class.

$sc = new ContainerBuilder();

$sc
    ->register('bar', '%bar.class%')
    ->setFile('/path/to/file')
    ->addArgument('Aarrg!!!')
;
$sc->setParameter('bar.class', 'Bar');

$sc->get('bar');

Resources

You can run the unit tests with the following command:

$ cd path/to/Symfony/Component/DependencyInjection/
$ composer.phar install
$ phpunit