@@ -307,8 +307,9 @@ and a Twitter client using it:
307
307
308
308
services :
309
309
rot13_transformer :
310
- class : Acme\Rot13Transformer
311
- autowiring_types : Acme\TransformerInterface
310
+ class : Acme\Rot13Transformer
311
+
312
+ Acme\TransformerInterface : ' @rot13_transformer'
312
313
313
314
twitter_client :
314
315
class : Acme\TwitterClient
@@ -330,9 +331,9 @@ and a Twitter client using it:
330
331
xsi : schemaLocation =" http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd" >
331
332
332
333
<services >
333
- <service id =" rot13_transformer" class =" Acme\Rot13Transformer" >
334
- < autowiring-type >Acme\TransformerInterface</ autowiring-type >
335
- </ service >
334
+ <service id =" rot13_transformer" class =" Acme\Rot13Transformer" / >
335
+
336
+ <service id = " Acme\TransformerInterface " alias = " rot13_transformer " / >
336
337
337
338
<service id =" twitter_client" class =" Acme\TwitterClient" autowire =" true" />
338
339
@@ -356,9 +357,8 @@ and a Twitter client using it:
356
357
use Symfony\Component\DependencyInjection\Definition;
357
358
358
359
// ...
359
- $rot13Definition = new Definition(Rot13Transformer::class);
360
- $rot13Definition->setAutowiringTypes(array(TransformerInterface::class));
361
- $container->setDefinition('rot13_transformer', $rot13Definition);
360
+ $container->register('rot13_transformer', Rot13Transformer::class);
361
+ $container->setAlias(TransformerInterface::class, 'rot13_transformer')
362
362
363
363
$clientDefinition = new Definition(TwitterClient::class);
364
364
$clientDefinition->setAutowired(true);
@@ -382,10 +382,14 @@ to use which leads to errors like this:
382
382
[Symfony\Component\DependencyInjection\Exception\RuntimeException]
383
383
Unable to autowire argument of type "Acme\TransformerInterface" for the service "twitter_client".
384
384
385
- Fortunately, the ``autowiring_types `` key is here to specify which implementation
386
- to use by default. This key can take a list of types if necessary.
385
+ Fortunately, the FQCN alias is here to specify which implementation
386
+ to use by default.
387
+
388
+ .. versionadded :: 3.3
389
+ Using FQCN aliases to fix autowiring ambiguities is allowed since Symfony
390
+ 3.3. Prior to version 3.3, you needed to use the ``autowiring_types `` key.
387
391
388
- Thanks to this setting , the ``rot13_transformer `` service is automatically injected
392
+ Thanks to this alias , the ``rot13_transformer `` service is automatically injected
389
393
as an argument of the ``uppercase_transformer `` and ``twitter_client `` services. For
390
394
the ``uppercase_twitter_client ``, a standard service definition is used to
391
395
inject the specific ``uppercase_transformer `` service.
0 commit comments