8000 feature #7858 Document ContainerBuilder::autowire() (GuilhemN) · symfony/symfony-docs@ce85cd3 · GitHub
[go: up one dir, main page]

Skip to content

Commit ce85cd3

Browse files
committed
feature #7858 Document ContainerBuilder::autowire() (GuilhemN)
This PR was merged into the master branch. Discussion ---------- Document ContainerBuilder::autowire() Fix #7255 Commits ------- 18107d9 Document ContainerBuilder::autowire()
2 parents dd4e692 + 18107d9 commit ce85cd3

File tree

1 file changed

+12
-22
lines changed

1 file changed

+12
-22
lines changed

service_container/autowiring.rst

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,16 @@ service is marked as autowired:
7474
.. code-block:: php
7575
7676
use Acme\TwitterClient;
77-
use Symfony\Component\DependencyInjection\Definition;
7877
7978
// ...
80-
$definition = new Definition(TwitterClient::class);
81-
$definition->setAutowired(true);
8279
83-
$container->setDefinition('twitter_client', $definition);
80+
$container->autowire('twitter_client', TwitterClient::class);
81+
82+
83+
.. versionadded:: 3.3
84+
The method ``ContainerBuilder::autowire()`` was introduced in Symfony 3.3.
85+
Prior to version 3.3, you needed to use the ``Definition::setAutowired()``
86+
method.
8487

8588
The autowiring subsystem will detect the dependencies of the ``TwitterClient``
8689
class by parsing its constructor. For instance it will find here an instance of
@@ -210,14 +213,10 @@ subsystem isn't able to find itself the interface implementation to register:
210213
.. code-block:: php
211214
212215
use Acme\TwitterClient;
213-
use Symfony\Component\DependencyInjection\Definition;
214216
215217
// ...
216218
$container->register('rot13_transformer', 'Acme\Rot13Transformer');
217-
218-
$clientDefinition = new Definition(TwitterClient::class);
219-
$clientDefinition->setAutowired(true);
220-
$container->setDefinition('twitter_client', $clientDefinition);
219+
$container->autowire('twitter_client', TwitterClient::class);
221220
222221
The autowiring subsystem detects that the ``rot13_transformer`` service implements
223222
the ``TransformerInterface`` and injects it automatically. Even when using
@@ -354,24 +353,15 @@ and a Twitter client using it:
354353
use Acme\TwitterClient;
355354
use Acme\UppercaseTransformer;
356355
use Symfony\Component\DependencyInjection\Reference;
357-
use Symfony\Component\DependencyInjection\Definition;
358356
359357
// ...
360358
$container->register('rot13_transformer', Rot13Transformer::class);
361359
$container->setAlias(TransformerInterface::class, 'rot13_transformer')
362360
363-
$clientDefinition = new Definition(TwitterClient::class);
364-
$clientDefinition->setAutowired(true);
365-
$container->setDefinition('twitter_client', $clientDefinition);
366-
367-
$uppercaseDefinition = new Definition(UppercaseTransformer::class);
368-
$uppercaseDefinition->setAutowired(true);
369-
$container->setDefinition('uppercase_transformer', $uppercaseDefinition);
370-
371-
$uppercaseClientDefinition = new Definition(TwitterClient::class, array(
372-
new Reference('uppercase_transformer'),
373-
));
374-
$container->setDefinition('uppercase_twitter_client', $uppercaseClientDefinition);
361+
$container->autowire('twitter_client', TwitterClient::class);
362+
$container->autowire('uppercase_transformer', UppercaseTransformer::class);
363+
$container->register('uppercase_twitter_client', TwitterClient::class)
364+
->addArgument(new Reference('uppercase_transformer'));
375365
376366
This deserves some explanations. You now have two services implementing the
377367
``TransformerInterface``. The autowiring subsystem cannot guess which one

0 commit comments

Comments
 (0)
0