@@ -76,10 +76,11 @@ service is marked as autowired:
7676
7777 .. code-block :: php
7878
79+ use Acme\TwitterClient;
7980 use Symfony\Component\DependencyInjection\Definition;
8081
8182 // ...
82- $definition = new Definition('Acme\ TwitterClient' );
83+ $definition = new Definition(TwitterClient::class );
8384 $definition->setAutowired(true);
8485
8586 $container->setDefinition('twitter_client', $definition);
@@ -150,9 +151,8 @@ modifying the class depending of them.
150151
151152To follow this best practice, constructor arguments must be typehinted with interfaces
152153and not concrete classes. It allows to replace easily the current implementation
153- if necessary. It also allows to use other transformers.
154-
155- Let's introduce a ``TransformerInterface ``::
154+ if necessary. It also allows to use other transformers. You can create a
155+ ``TransformerInterface `` containing just one method (``transform() ``)::
156156
157157 namespace Acme;
158158
@@ -164,18 +164,15 @@ Let's introduce a ``TransformerInterface``::
164164Then edit ``Rot13Transformer `` to make it implementing the new interface::
165165
166166 // ...
167-
168167 class Rot13Transformer implements TransformerInterface
169-
170- // ...
171-
168+ {
169+ // ...
170+ }
172171
173172And update ``TwitterClient `` to depend of this new interface::
174173
175174 class TwitterClient
176175 {
177- // ...
178-
179176 public function __construct(TransformerInterface $transformer)
180177 {
181178 // ...
@@ -215,12 +212,13 @@ subsystem isn't able to find itself the interface implementation to register:
215212
216213 .. code-block :: php
217214
215+ use Acme\TwitterClient;
218216 use Symfony\Component\DependencyInjection\Definition;
219217
220218 // ...
221219 $container->register('rot13_transformer', 'Acme\Rot13Transformer');
222220
223- $clientDefinition = new Definition('Acme\ TwitterClient' );
221+ $clientDefinition = new Definition(TwitterClient::class );
224222 $clientDefinition->setAutowired(true);
225223 $container->setDefinition('twitter_client', $clientDefinition);
226224
@@ -353,23 +351,27 @@ and a Twitter client using it:
353351
354352 .. code-block :: php
355353
354+ use Acme\Rot13Transformer;
355+ use Acme\TransformerInterface;
356+ use Acme\TwitterClient;
357+ use Acme\UppercaseTransformer;
356358 use Symfony\Component\DependencyInjection\Reference;
357359 use Symfony\Component\DependencyInjection\Definition;
358360
359361 // ...
360- $rot13Definition = new Definition('Acme\ Rot13Transformer' );
361- $rot13Definition->setAutowiringTypes(array('Acme\ TransformerInterface' ));
362+ $rot13Definition = new Definition(Rot13Transformer::class );
363+ $rot13Definition->setAutowiringTypes(array(TransformerInterface::class ));
362364 $container->setDefinition('rot13_transformer', $rot13Definition);
363365
364- $clientDefinition = new Definition('Acme\ TwitterClient' );
366+ $clientDefinition = new Definition(TwitterClient::class );
365367 $clientDefinition->setAutowired(true);
366368 $container->setDefinition('twitter_client', $clientDefinition);
367369
368- $uppercaseDefinition = new Definition('Acme\ UppercaseTransformer' );
370+ $uppercaseDefinition = new Definition(UppercaseTransformer::class );
369371 $uppercaseDefinition->setAutowired(true);
370372 $container->setDefinition('uppercase_transformer', $uppercaseDefinition);
371373
372- $uppercaseClientDefinition = new Definition('Acme\ TwitterClient' , array(
374+ $uppercaseClientDefinition = new Definition(TwitterClient::class , array(
373375 new Reference('uppercase_transformer'),
374376 ));
375377 $container->setDefinition('uppercase_twitter_client', $uppercaseClientDefinition);
0 commit comments