@@ -73,10 +73,11 @@ service is marked as autowired:
7373
7474 .. code-block :: php
7575
76+ use Acme\TwitterClient;
7677 use Symfony\Component\DependencyInjection\Definition;
7778
7879 // ...
79- $definition = new Definition('Acme\ TwitterClient' );
80+ $definition = new Definition(TwitterClient::class );
8081 $definition->setAutowired(true);
8182
8283 $container->setDefinition('twitter_client', $definition);
@@ -147,9 +148,8 @@ modifying the class depending of them.
147148
148149To follow this best practice, constructor arguments must be typehinted with interfaces
149150and not concrete classes. It allows to replace easily the current implementation
150- if necessary. It also allows to use other transformers.
151-
152- Let's introduce a ``TransformerInterface ``::
151+ if necessary. It also allows to use other transformers. You can create a
152+ ``TransformerInterface `` containing just one method (``transform() ``)::
153153
154154 namespace Acme;
155155
@@ -161,18 +161,15 @@ Let's introduce a ``TransformerInterface``::
161161Then edit ``Rot13Transformer `` to make it implementing the new interface::
162162
163163 // ...
164-
165164 class Rot13Transformer implements TransformerInterface
166-
167- // ...
168-
165+ {
166+ // ...
167+ }
169168
170169And update ``TwitterClient `` to depend of this new interface::
171170
172171 class TwitterClient
173172 {
174- // ...
175-
176173 public function __construct(TransformerInterface $transformer)
177174 {
178175 // ...
@@ -212,12 +209,13 @@ subsystem isn't able to find itself the interface implementation to register:
212209
213210 .. code-block :: php
214211
212+ use Acme\TwitterClient;
215213 use Symfony\Component\DependencyInjection\Definition;
216214
217215 // ...
218216 $container->register('rot13_transformer', 'Acme\Rot13Transformer');
219217
220- $clientDefinition = new Definition('Acme\ TwitterClient' );
218+ $clientDefinition = new Definition(TwitterClient::class );
221219 $clientDefinition->setAutowired(true);
222220 $container->setDefinition('twitter_client', $clientDefinition);
223221
@@ -350,23 +348,27 @@ and a Twitter client using it:
350348
351349 .. code-block :: php
352350
351+ use Acme\Rot13Transformer;
352+ use Acme\TransformerInterface;
353+ use Acme\TwitterClient;
354+ use Acme\UppercaseTransformer;
353355 use Symfony\Component\DependencyInjection\Reference;
354356 use Symfony\Component\DependencyInjection\Definition;
355357
356358 // ...
357- $rot13Definition = new Definition('Acme\ Rot13Transformer' );
358- $rot13Definition->setAutowiringTypes(array('Acme\ TransformerInterface' ));
359+ $rot13Definition = new Definition(Rot13Transformer::class );
360+ $rot13Definition->setAutowiringTypes(array(TransformerInterface::class ));
359361 $container->setDefinition('rot13_transformer', $rot13Definition);
360362
361- $clientDefinition = new Definition('Acme\ TwitterClient' );
363+ $clientDefinition = new Definition(TwitterClient::class );
362364 $clientDefinition->setAutowired(true);
363365 $container->setDefinition('twitter_client', $clientDefinition);
364366
365- $uppercaseDefinition = new Definition('Acme\ UppercaseTransformer' );
367+ $uppercaseDefinition = new Definition(UppercaseTransformer::class );
366368 $uppercaseDefinition->setAutowired(true);
367369 $container->setDefinition('uppercase_transformer', $uppercaseDefinition);
368370
369- $uppercaseClientDefinition = new Definition('Acme\ TwitterClient' , array(
371+ $uppercaseClientDefinition = new Definition(TwitterClient::class , array(
370372 new Reference('uppercase_transformer'),
371373 ));
372374 $container->setDefinition('uppercase_twitter_client', $uppercaseClientDefinition);
0 commit comments