Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 2229fd3

Browse filesBrowse files
committed
Merge remote-tracking branch 'origin/master' into di-3.3-changes
* origin/master: Document ContainerBuilder::autowire()
2 parents 5452c61 + ce85cd3 commit 2229fd3
Copy full SHA for 2229fd3

File tree

Expand file treeCollapse file tree

1 file changed

+12
-22
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+12
-22
lines changed

‎service_container/autowiring.rst

Copy file name to clipboardExpand all lines: service_container/autowiring.rst
+12-22Lines 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
@@ -356,24 +355,15 @@ and a Twitter client using it:
356355
use Acme\TwitterClient;
357356
use Acme\UppercaseTransformer;
358357
use Symfony\Component\DependencyInjection\Reference;
359-
use Symfony\Component\DependencyInjection\Definition;
360358
361359
// ...
362360
$container->register('rot13_transformer', Rot13Transformer::class);
363361
$container->setAlias(TransformerInterface::class, 'rot13_transformer')
364362
365-
$clientDefinition = new Definition(TwitterClient::class);
366-
$clientDefinition->setAutowired(true);
367-
$container->setDefinition('twitter_client', $clientDefinition);
368-
369-
$uppercaseDefinition = new Definition(UppercaseTransformer::class);
370-
$uppercaseDefinition->setAutowired(true);
371-
$container->setDefinition('uppercase_transformer', $uppercaseDefinition);
372-
373-
$uppercaseClientDefinition = new Definition(TwitterClient::class, array(
374-
new Reference('uppercase_transformer'),
375-
));
376-
$container->setDefinition('uppercase_twitter_client', $uppercaseClientDefinition);
363+
$container->autowire('twitter_client', TwitterClient::class);
364+
$container->autowire('uppercase_transformer', UppercaseTransformer::class);
365+
$container->register('uppercase_twitter_client', TwitterClient::class)
366+
->addArgument(new Reference('uppercase_transformer'));
377367
378368
This deserves some explanations. You now have two services implementing the
379369
``TransformerInterface``. The autowiring subsystem cannot guess which one

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.