8000 minor #7187 Use PHP 5.5's ::class notation everywhere (wouterj) · symfony/symfony-docs@ce79cff · GitHub
[go: up one dir, main page]

Skip to content

Commit ce79cff

Browse files
committed
minor #7187 Use PHP 5.5's ::class notation everywhere (wouterj)
This PR was merged into the 2.8 branch. Discussion ---------- Use PHP 5.5's ::class notation everywhere While updating to use the `::class` notation, I also fixed quite a few error's in the PHP code block, reformatted things a bit and updated some articles to use the AppBundle. /fixes #7186 Commits ------- cd1406f Use PHP 5.5's ::class notation
2 parents 6d6c1b0 + cd1406f commit ce79cff

File tree

93 files changed

+647
-456
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+647
-456
lines changed

_includes/service_container/_my_mailer.rst.inc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@
2727
.. code-block:: php
2828

2929
// app/config/services.php
30+
use AppBundle\Mailer;
3031
use Symfony\Component\DependencyInjection\Definition;
3132

3233
$container->setDefinition('app.mailer', new Definition(
33-
'AppBundle\Mailer',
34+
Mailer::class,
3435
array('sendmail')
3536
));

best_practices/forms.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ form in its own PHP class::
1919

2020
namespace AppBundle\Form;
2121

22+
use AppBundle\Entity\Post;
2223
use Symfony\Component\Form\AbstractType;
2324
use Symfony\Component\Form\FormBuilderInterface;
2425
use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -42,7 +43,7 @@ form in its own PHP class::
4243
public function configureOptions(OptionsResolver $resolver)
4344
{
4445
$resolver->setDefaults(array(
45-
'data_class' => 'AppBundle\Entity\Post'
46+
'data_class' => Post::class,
4647
));
4748
}
4849
}

bundles/extension.rst

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,17 @@ Your bundles can also add their own classes into this file thanks to the
137137
``addClassesToCompile()`` method. Define the classes to compile as an array of
138138
their fully qualified class names::
139139

140+
use AppBundle\Manager\UserManager;
141+
use AppBundle\Utils\Slugger;
142+
140143
// ...
141144
public function load(array $configs, ContainerBuilder $container)
142145
{
143146
// ...
144147

145148
$this->addClassesToCompile(array(
146-
'AppBundle\\Manager\\UserManager',
147-
'AppBundle\\Utils\\Slugger',
149+
UserManager::class,
150+
Slugger::class,
148151
// ...
149152
));
150153
}

bundles/override.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ example, the implementing class for the ``original-service-id`` is changed to
4545
// src/Acme/DemoBundle/DependencyInjection/Compiler/OverrideServiceCompilerPass.php
4646
namespace Acme\DemoBundle\DependencyInjection\Compiler;
4747

48+
use Acme\DemoBundle\YourService;
4849
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
4950
use Symfony\Component\DependencyInjection\ContainerBuilder;
5051

@@ -53,7 +54,7 @@ example, the implementing class for the ``original-service-id`` is changed to
5354
public function process(ContainerBuilder $container)
5455
{
5556
$definition = $container->getDefinition('original-service-id');
56-
$definition->setClass('Acme\DemoBundle\YourService');
57+
$definition->setClass(YourService::class);
5758
}
5859
}
5960

components/class_loader/class_loader.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ looked for in a location list to ease the vendoring of a sub-set of classes
5959
for large projects::
6060

6161
$loader->addPrefixes(array(
62-
'Doctrine\\Common' => __DIR__.'/vendor/doctrine/common/lib',
63-
'Doctrine\\DBAL\\Migrations' => __DIR__.'/vendor/doctrine/migrations/lib',
64-
'Doctrine\\DBAL' => __DIR__.'/vendor/doctrine/dbal/lib',
65-
'Doctrine' => __DIR__.'/vendor/doctrine/orm/lib',
62+
'Doctrine\Common' => __DIR__.'/vendor/doctrine/common/lib',
63+
'Doctrine\DBAL\Migrations' => __DIR__.'/vendor/doctrine/migrations/lib',
64+
'Doctrine\DBAL' => __DIR__.'/vendor/doctrine/dbal/lib',
65+
'Doctrine' => __DIR__.'/vendor/doctrine/orm/lib',
6666
));
6767

6868
In this example, if you try to use a class in the ``Doctrine\Common`` namespace

components/class_loader/psr4_class_loader.rst

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,15 @@ The directory structure will look like this:
3838
demo.php
3939
4040
In ``demo.php`` you are going to parse the ``config.yml`` file. To do that, you
41-
first need to configure the ``Psr4ClassLoader``:
42-
43-
.. code-block:: php
41+
first need to configure the ``Psr4ClassLoader``::
4442

4543
use Symfony\Component\ClassLoader\Psr4ClassLoader;
4644
use Symfony\Component\Yaml\Yaml;
4745

4846
require __DIR__.'/lib/ClassLoader/Psr4ClassLoader.php';
4947

5048
$loader = new Psr4ClassLoader();
51-
$loader->addPrefix('Symfony\\Component\\Yaml\\', __DIR__.'/lib/Yaml');
49+
$loader->addPrefix('Symfony\Component\Yaml\\', __DIR__.'/lib/Yaml');
5250
$loader->register();
5351

5452
$data = Yaml::parse(file_get_contents(__DIR__.'/config.yml'));

components/dependency_injection/autowiring.rst

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

151152
To follow this best practice, constructor arguments must be typehinted with interfaces
152153
and 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``::
164164
Then edit ``Rot13Transformer`` to make it implementing the new interface::
165165

166166
// ...
167-
168167
class Rot13Transformer implements TransformerInterface
169-
170-
// ...
171-
168+
{
169+
// ...
170+
}
172171

173172
And 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);

components/event_dispatcher.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,27 +201,28 @@ determine which instance is passed.
201201
use Symfony\Component\DependencyInjection\Definition;
202202
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
203203
use Symfony\Component\DependencyInjection\Reference;
204+
use Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher;
204205
use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass;
205206

206207
$containerBuilder = new ContainerBuilder(new ParameterBag());
207208
$containerBuilder->addCompilerPass(new RegisterListenersPass());
208209

209210
// register the event dispatcher service
210211
$containerBuilder->setDefinition('event_dispatcher', new Definition(
211-
'Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher',
212+
ContainerAwareEventDispatcher::class,
212213
array(new Reference('service_container'))
213214
));
214215

215216
// register your event listener service
216-
$listener = new Definition('AcmeListener');
217+
$listener = new Definition(\AcmeListener::class);
217218
$listener->addTag('kernel.event_listener', array(
218219
'event' => 'foo.action',
219220
'method' => 'onFooAction',
220221
));
221222
$containerBuilder->setDefinition('listener_service_id', $listener);
222223

223224
// register an event subscriber
224-
$subscriber = new Definition('AcmeSubscriber');
225+
$subscriber = new Definition(\AcmeSubscriber::class);
225226
$subscriber->addTag('kernel.event_subscriber');
226227
$containerBuilder->setDefinition('subscriber_service_id', $subscriber);
227228

components/form.rst

Lines changed: 2 additions & 2 deletions
F438
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,7 @@ option when building each field:
660660
->add('dueDate', DateType::class, array(
661661
'constraints' => array(
662662
new NotBlank(),
663-
new Type('\DateTime'),
663+
new Type(\DateTime::class),
664664
)
665665
))
666666
->getForm();
@@ -679,7 +679,7 @@ option when building each field:
679679
->add('dueDate', DateType::class, array(
680680
'constraints' => array(
681681
new NotBlank(),
682-
new Type('\DateTime'),
682+
new Type(\DateTime::class),
683683
)
684684
))
685685
->getForm();

components/security/authentication.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,19 +172,19 @@ user. This allows you to use different encoding strategies for different
172172
types of users. The default :class:`Symfony\\Component\\Security\\Core\\Encoder\\EncoderFactory`
173173
receives an array of encoders::
174174

175+
use Acme\Entity\LegacyUser;
175176
use Symfony\Component\Security\Core\Encoder\EncoderFactory;
176177
use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;
178+
use Symfony\Component\Security\Core\User\User;
177179

178180
$defaultEncoder = new MessageDigestPasswordEncoder('sha512', true, 5000);
179181
$weakEncoder = new MessageDigestPasswordEncoder('md5', true, 1);
180182

181183
$encoders = array(
182-
'Symfony\\Component\\Security\\Core\\User\\User' => $defaultEncoder,
183-
'Acme\\Entity\\LegacyUser' => $weakEncoder,
184-
184+
User::class => $defaultEncoder,
185+
LegacyUser::class => $weakEncoder,
185186
// ...
186187
);
187-
188188
$encoderFactory = new EncoderFactory($encoders);
189189

190190
Each encoder should implement :class:`Symfony\\Component\\Security\\Core\\Encoder\\PasswordEncoderInterface`

components/security/authorization.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,11 @@ on a "remember-me" cookie, or even authenticated anonymously?
119119
.. code-block:: php
120120
121121
use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver;
122+
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
123+
use Symfony\Component\Security\Core\Authentication\Token\RememberMeToken;
122124
123-
$anonymousClass = 'Symfony\Component\Security\Core\Authentication\Token\AnonymousToken';
124-
$rememberMeClass = 'Symfony\Component\Security\Core\Authentication\Token\RememberMeToken';
125+
$anonymousClass = AnonymousToken::class;
126+
$rememberMeClass = RememberMeToken::Class;
125127
126128
$trustResolver = new AuthenticationTrustResolver($anonymousClass, $rememberMeClass);
127129

components/serializer.rst

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ Deserializing an Object
133133
You'll now learn how to do the exact opposite. This time, the information
134134
of the ``Person`` class would be encoded in XML format::
135135

136+
use Acme\Person;
137+
136138
$data = <<<EOF
137139
<person>
138140
<name>foo</name>
@@ -141,7 +143,7 @@ of the ``Person`` class would be encoded in XML format::
141143
</person>
142144
EOF;
143145

144-
$person = $serializer->deserialize($data, 'Acme\Person', 'xml');
146+
$person = $serializer->deserialize($data, Person::class, 'xml');
145147

146148
In this case, :method:`Symfony\\Component\\Serializer\\Serializer::deserialize`
147149
needs three parameters:
@@ -155,7 +157,8 @@ Deserializing in an Existing Object
155157

156158
The serializer can also be used to update an existing object::
157159

158-
$person = new Acme\Person();
160+
// ...
161+
$person = new Person();
159162
$person->setName('bar');
160163
$person->setAge(99);
161164
$person->setSportsman(true);
@@ -167,7 +170,7 @@ The serializer can also be used to update an existing object::
167170
</person>
168171
EOF;
169172

170-
$serializer->deserialize($data, 'Acme\Person', 'xml', array('object_to_populate' => $person));
173+
$serializer->deserialize($data, Person::class, 'xml', array('object_to_populate' => $person));
171174
// $person = Acme\Person(name: 'foo', age: '69', sportsman: true)
172175

173176
This is a common need when working with an ORM.

console/commands_as_services.rst

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,10 @@ with ``console.command``:
5252
.. code-block:: php
5353
5454
// app/config/config.php
55+
use AppBundle\Command\MyCommand;
56+
5557
$container
56-
->register(
57-
'app.command.my_command',
58-
'AppBundle\Command\MyCommand'
59-
)
58+
->register('app.command.my_command', MyCommand::class)
6059
->addTag('console.command')
6160
;
6261
@@ -164,13 +163,12 @@ inject the ``command.default_name`` parameter:
164163
.. code-block:: php
165164
166165
// app/config/config.php
166+
use AppBundle\Command\MyCommand;
167+
167168
$container->setParameter('command.default_name', 'Javier');
168169
169170
$container
170-
->register(
171-
'app.command.my_command',
172-
'AppBundle\Command\MyCommand',
173-
)
171+
->register('app.command.my_command', MyCommand::class)
174172
->setArguments(array('%command.default_name%'))
175173
->addTag('console.command')
176174
;

console/logging.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,12 @@ First configure a listener for console exception events in the service container
109109
.. code-block:: php
110110
111111
// app/config/services.php
112+
use AppBundle\EventListener\ConsoleExceptionListener;
112113
use Symfony\Component\DependencyInjection\Definition;
113114
use Symfony\Component\DependencyInjection\Reference;
114115
115116
$definitionConsoleExceptionListener = new Definition(
116-
'AppBundle\EventListener\ConsoleExceptionListener',
117+
ConsoleExceptionListener::class,
117118
array(new Reference('logger'))
118119
);
119120
$definitionConsoleExceptionListener->addTag(
@@ -206,11 +207,12 @@ First configure a listener for console terminate events in the service container
206207
.. code-block:: php
207208
208209
// app/config/services.php
210+
use AppBundle\EventListener\ErrorLoggerListener;
209211
use Symfony\Component\DependencyInjection\Definition;
210212
use Symfony\Component\DependencyInjection\Reference;
211213
212214
$definitionErrorLoggerListener = new Definition(
213-
'AppBundle\EventListener\ErrorLoggerListener',
215+
ErrorLoggerListener::class,
214216
array(new Reference('logger'))
215217
);
216218
$definitionErrorLoggerListener->addTag(

controller/error_pages.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,10 +294,11 @@ In that case, you might want to override one or both of the ``showAction()`` and
294294
.. code-block:: php
295295
296296
// app/config/services.php
297+
use AppBundle\Controller\CustomExceptionController;
297298
use Symfony\Component\DependencyInjection\Reference;
298299
use Symfony\Component\DependencyInjection\Definition;
299300
300-
$definition = new Definition('AppBundle\Controller\CustomExceptionController', array(
301+
$definition = new Definition(CustomExceptionController::class, array(
301302
new Reference('twig'),
302303
'%kernel.debug%'
303304
));

0 commit comments

Comments
 (0)
0