@@ -74,13 +74,16 @@ service is marked as autowired:
74
74
.. code-block :: php
75
75
76
76
use Acme\TwitterClient;
77
- use Symfony\Component\DependencyInjection\Definition;
78
77
79
78
// ...
80
- $definition = new Definition(TwitterClient::class);
81
- $definition->setAutowired(true);
82
79
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.
84
87
85
88
The autowiring subsystem will detect the dependencies of the ``TwitterClient ``
86
89
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:
210
213
.. code-block :: php
211
214
212
215
use Acme\TwitterClient;
213
- use Symfony\Component\DependencyInjection\Definition;
214
216
215
217
// ...
216
218
$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);
221
220
222
221
The autowiring subsystem detects that the ``rot13_transformer `` service implements
223
222
the ``TransformerInterface `` and injects it automatically. Even when using
@@ -356,24 +355,15 @@ and a Twitter client using it:
356
355
use Acme\TwitterClient;
357
356
use Acme\UppercaseTransformer;
358
357
use Symfony\Component\DependencyInjection\Reference;
359
- use Symfony\Component\DependencyInjection\Definition;
360
358
361
359
// ...
362
360
$container->register('rot13_transformer', Rot13Transformer::class);
363
361
$container->setAlias(TransformerInterface::class, 'rot13_transformer')
364
362
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'));
377
367
378
368
This deserves some explanations. You now have two services implementing the
379
369
``TransformerInterface ``. The autowiring subsystem cannot guess which one
0 commit comments