@@ -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,8 @@ 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
+ <service id =" Acme\TransformerInterface" alias =" rot13_transformer" />
336
336
337
337
<service id =" twitter_client" class =" Acme\TwitterClient" autowire =" true" />
338
338
@@ -356,9 +356,8 @@ and a Twitter client using it:
356
356
use Symfony\Component\DependencyInjection\Definition;
357
357
358
358
// ...
359
- $rot13Definition = new Definition(Rot13Transformer::class);
360
- $rot13Definition->setAutowiringTypes(array(TransformerInterface::class));
361
- $container->setDefinition('rot13_transformer', $rot13Definition);
359
+ $container->register('rot13_transformer', Rot13Transformer::class);
360
+ $container->setAlias(TransformerInterface::class, 'rot13_transformer')
362
361
363
362
$clientDefinition = new Definition(TwitterClient::class);
364
363
$clientDefinition->setAutowired(true);
@@ -382,10 +381,14 @@ to use which leads to errors like this:
382
381
[Symfony\Component\DependencyInjection\Exception\RuntimeException]
383
382
Unable to autowire argument of type "Acme\TransformerInterface" for the service "twitter_client".
384
383
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.
384
+ Fortunately, the FQCN alias is here to specify which implementation
385
+ to use by default.
386
+
387
+ .. versionadded :: 3.2
388
+ Using FQCN aliases to fix autowiring ambiguities is allowed since Symfony
389
+ 3.3. Prior to version 3.3, you needed to use the ``autowiring_types `` key.
387
390
388
- Thanks to this setting , the ``rot13_transformer `` service is automatically injected
391
+ Thanks to this alias , the ``rot13_transformer `` service is automatically injected
389
392
as an argument of the ``uppercase_transformer `` and ``twitter_client `` services. For
390
393
the ``uppercase_twitter_client ``, a standard service definition is used to
391
394
inject the specific ``uppercase_transformer `` service.
0 commit comments