Skip to content

Commit 5802178

Browse files
committed
Replace calls to setDefinition() by register()
1 parent 5905e69 commit 5802178

32 files changed

+189
-326
lines changed

_includes/service_container/_my_mailer.rst.inc

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@
2828

2929
// app/config/services.php
3030
use AppBundle\Mailer;
31-
use Symfony\Component\DependencyInjection\Definition;
3231

33-
$container->setDefinition('app.mailer', new Definition(
34-
Mailer::class,
35-
array('sendmail')
36-
));
32+
$container->register('app.mailer', Mailer::class)
33+
->addArgument('sendmail');

components/event_dispatcher.rst

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ answer.
2222
Consider the real-world example where you want to provide a plugin system
2323
for your project. A plugin should be able to add methods, or do something
2424
before or after a method is executed, without interfering with other plugins.
25-
This is not an easy problem to solve with single inheritance, and even if
25+
This is not an easy problem to solve with single inheritance, and even if
2626
multiple inheritance was possible with PHP, it comes with its own drawbacks.
2727

2828
The Symfony EventDispatcher component implements the `Mediator`_ pattern
@@ -198,7 +198,6 @@ determine which instance is passed.
198198
to tag services as event listeners::
199199

200200
use Symfony\Component\DependencyInjection\ContainerBuilder;
201-
use Symfony\Component\DependencyInjection\Definition;
202201
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
203202
use Symfony\Component\DependencyInjection\Reference;
204203
use Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher;
@@ -208,23 +207,19 @@ determine which instance is passed.
208207
$containerBuilder->addCompilerPass(new RegisterListenersPass());
209208

210209
// register the event dispatcher service
211-
$containerBuilder->setDefinition('event_dispatcher', new Definition(
212-
ContainerAwareEventDispatcher::class,
213-
array(new Reference('service_container'))
214-
));
210+
$containerBuilder->register('event_dispatcher', ContainerAwareEventDispatcher::class)
211+
->addArgument(new Reference('service_container'));
215212

216213
// register your event listener service
217-
$listener = new Definition(\AcmeListener::class);
218-
$listener->addTag('kernel.event_listener', array(
219-
'event' => 'acme.foo.action',
220-
'method' => 'onFooAction',
221-
));
222-
$containerBuilder->setDefinition('listener_service_id', $listener);
214+
$containerBuilder->register('listener_service_id', \AcmeListener::class)
215+
->addTag('kernel.event_listener', array(
216+
'event' => 'acme.foo.action',
217+
'method' => 'onFooAction',
218+
));
223219

224220
// register an event subscriber
225-
$subscriber = new Definition(\AcmeSubscriber::class);
226-
$subscriber->addTag('kernel.event_subscriber');
227-
$containerBuilder->setDefinition('subscriber_service_id', $subscriber);
221+
$containerBuilder->register('subscriber_service_id', \AcmeSubscriber::class)
222+
->addTag('kernel.event_subscriber');
228223

229224
By default, the listeners pass assumes that the event dispatcher's service
230225
id is ``event_dispatcher``, that event listeners are tagged with the
@@ -441,7 +436,7 @@ EventDispatcher Aware Events and Listeners
441436
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
442437

443438
The ``EventDispatcher`` always passes the dispatched event, the event's
444-
name and a reference to itself to the listeners. This can lead to some advanced
439+
name and a reference to itself to the listeners. This can lead to some advanced
445440
applications of the ``EventDispatcher`` including dispatching other events inside
446441
listeners, chaining events or even lazy loading listeners into the dispatcher object.
447442

console/logging.rst

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -110,21 +110,14 @@ First configure a listener for console exception events in the service container
110110
111111
// app/config/services.php
112112
use AppBundle\EventListener\ConsoleExceptionListener;
113-
use Symfony\Component\DependencyInjection\Definition;
114113
use Symfony\Component\DependencyInjection\Reference;
115114
116-
$definitionConsoleExceptionListener = new Definition(
117-
ConsoleExceptionListener::class,
118-
array(new Reference('logger'))
119-
);
120-
$definitionConsoleExceptionListener->addTag(
121-
'kernel.event_listener',
122-
array('event' => 'console.exception')
123-
);
124-
$container->setDefinition(
125-
'app.listener.command_exception',
126-
$definitionConsoleExceptionListener
127-
);
115+
$container->register('app.listener.command_exception', ConsoleExceptionListener::class)
116+
->addArgument(new Reference('logger'))
117+
->addTag(
118+
'kernel.event_listener',
119+
array('event' => 'console.exception')
120+
);
128121
129122
Then implement the actual listener::
130123

@@ -211,21 +204,14 @@ First configure a listener for console terminate events in the service container
211204
212205
// app/config/services.php
213206
use AppBundle\EventListener\ErrorLoggerListener;
214-
use Symfony\Component\DependencyInjection\Definition;
215207
use Symfony\Component\DependencyInjection\Reference;
216208
217-
$definitionErrorLoggerListener = new Definition(
218-
ErrorLoggerListener::class,
219-
array(new Reference('logger'))
220-
);
221-
$definitionErrorLoggerListener->addTag(
222-
'kernel.event_listener',
223-
array('event' => 'console.terminate')
224-
);
225-
$container->setDefinition(
226-
'app.listener.command_error',
227-
$definitionErrorLoggerListener
228-
);
209+
$container->register('app.listener.command_error', ErrorLoggerListener::class)
210+
->addArgument(new Reference('logger'))
211+
->addTag(
212+
'kernel.event_listener',
213+
array('event' => 'console.terminate')
214+
);
229215
230216
Then implement the actual listener::
231217

controller/error_pages.rst

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -319,13 +319,12 @@ In that case, you might want to override one or both of the ``showAction()`` and
319319
// app/config/services.php
320320
use AppBundle\Controller\CustomExceptionController;
321321
use Symfony\Component\DependencyInjection\Reference;
322-
use Symfony\Component\DependencyInjection\Definition;
323322
324-
$definition = new Definition(CustomExceptionController::class, array(
325-
new Reference('twig'),
326-
'%kernel.debug%'
327-
));
328-
$container->setDefinition('app.exception_controller', $definition);
323+
$container->register('app.exception_controller', CustomExceptionController::class)
324+
->setArguments(array(
325+
new Reference('twig'),
326+
'%kernel.debug%'
327+
));
329328
330329
And then configure ``twig.exception_controller`` using the controller as
331330
services syntax (e.g. ``app.exception_controller:showAction``).

controller/service.rst

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -229,13 +229,10 @@ argument:
229229
230230
// app/config/services.php
231231
use AppBundle\Controller\HelloController;
232-
use Symfony\Component\DependencyInjection\Definition;
233232
use Symfony\Component\DependencyInjection\Reference;
234233
235-
$container->setDefinition('app.hello_controller', new Definition(
236-
HelloController::class,
237-
array(new Reference('templating'))
238-
));
234+
$container->register('app.hello_controller', HelloController::class)
235+
->addArgument(new Reference('templating'));
239236
240237
Rather than fetching the ``templating`` service from the container, you can
241238
inject *only* the exact service(s) that you need directly into the controller.

controller/upload_file.rst

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -287,13 +287,10 @@ Then, define a service for this class:
287287
288288
// app/config/services.php
289289
use AppBundle\FileUploader;
290-
use Symfony\Component\DependencyInjection\Definition;
291290
292291
// ...
293-
$container->setDefinition('app.brochure_uploader', new Definition(
294-
FileUploader::class,
295-
array('%brochures_directory%')
296-
));
292+
$container->register('app.brochure_uploader', FileUploader::class)
293+
->addArgument(FileUploader::class);
297294
298295
Now you're ready to use this service in the controller::
299296

@@ -415,21 +412,17 @@ Now, register this class as a Doctrine listener:
415412
416413
// app/config/services.php
417414
use AppBundle\EventListener\BrochureUploaderListener;
418-
use Symfony\Component\DependencyInjection\Definition;
419415
use Symfony\Component\DependencyInjection\Reference;
420416
421417
// ...
422-
$definition = new Definition(
423-
BrochureUploaderListener::class,
424-
array(new Reference('brochures_directory'))
425-
);
426-
$definition->addTag('doctrine.event_listener', array(
427-
'event' => 'prePersist',
428-
));
429-
$definition->addTag('doctrine.event_listener', array(
430-
'event' => 'preUpdate',
431-
));
432-
$container->setDefinition('app.doctrine_brochure_listener', $definition);
418+
$container->register('app.doctrine_brochure_listener', BrochureUploaderListener::class)
419+
->addArgument(new Reference('brochures_directory'))
420+
->addTag('doctrine.event_listener', array(
421+
'event' => 'prePersist',
422+
))
423+
->addTag('doctrine.event_listener', array(
424+
'event' => 'prePersist',
425+
));
433426
434427
This listener is now automatically executed when persisting a new Product
435428
entity. This way, you can remove everything related to uploading from the

doctrine/mongodb_session_storage.rst

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,20 +89,19 @@ need to change/add some parameters in the main configuration file:
8989
),
9090
));
9191
92-
$container->setDefinition('mongo_client', new Definition(
93-
\MongoClient::class,
94-
array(
92+
$container->register('mongo_client', \MongoClient::class)
93+
->setArguments(array(
9594
// if using a username and password
9695
array('mongodb://%mongodb_username%:%mongodb_password%@%mongodb_host%:27017'),
9796
// if not using a username and password
9897
array('mongodb://%mongodb_host%:27017'),
99-
)
100-
));
98+
));
10199
102-
$container->setDefinition('session.handler.mongo', new Definition(
103-
MongoDbSessionHandler::class,
104-
array(new Reference('mongo_client'), '%mongo.session.options%')
105-
));
100+
$container->register('session.handler.mongo', MongoDbSessionHandler::class)
101+
->setArguments(array(
102+
new Reference('mongo_client'),
103+
'%mongo.session.options%',
104+
));
106105
107106
The parameters used above should be defined somewhere in your application, often in your main
108107
parameters configuration:

doctrine/pdo_session_storage.rst

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ To use it, you just need to change some parameters in the main configuration fil
5858
5959
// app/config/config.php
6060
61+
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
62+
6163
// ...
6264
$container->loadFromExtension('framework', array(
6365
// ...
@@ -67,11 +69,11 @@ To use it, you just need to change some parameters in the main configuration fil
6769
),
6870
));
6971
70-
$storageDefinition = new Definition(PdoSessionHandler::class, array(
71-
'mysql:dbname=mydatabase',
72-
array('db_username' => 'myuser', 'db_password' => 'mypassword')
73-
));
74-
$container->setDefinition('session.handler.pdo', $storageDefinition);
72+
$container->register('session.handler.pdo', PdoSessionHandler::class)
73+
->setArguments(array(
74+
'mysql:dbname=mydatabase',
75+
array('db_username' => 'myuser', 'db_password' => 'mypassword'),
76+
));
7577
7678
Configuring the Table and Column Names
7779
--------------------------------------
@@ -112,15 +114,14 @@ a second array argument to ``PdoSessionHandler``:
112114
113115
// app/config/config.php
114116
115-
use Symfony\Component\DependencyInjection\Definition;
116117
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
117118
// ...
118119
119-
$storageDefinition = new Definition(PdoSessionHandler::class, array(
120-
'mysql:dbname=mydatabase',
121-
array('db_table' => 'sessions', 'db_username' => 'myuser', 'db_password' => 'mypassword')
122-
));
123-
$container->setDefinition('session.handler.pdo', $storageDefinition);
120+
$container->register('session.handler.pdo', PdoSessionHandler::class)
121+
->setArguments(array(
122+
'mysql:dbname=mydatabase',
123+
array('db_table' => 'sessions', 'db_username' => 'myuser', 'db_password' => 'mypassword')
124+
));
124125
125126
.. versionadded:: 2.6
126127
The ``db_lifetime_col`` was introduced in Symfony 2.6. Prior to 2.6,

event_dispatcher/before_after_filters.rst

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,13 @@ your listener to be called just before any controller is executed.
173173
174174
// app/config/services.php
175175
use AppBundle\EventListener\TokenListener;
176-
use Symfony\Component\DependencyInjection\Definition;
177176
178-
$listener = new Definition(TokenListener::class, array('%tokens%'));
179-
$listener->addTag('kernel.event_listener', array(
180-
'event' => 'kernel.controller',
181-
'method' => 'onKernelController'
182-
));
183-
$container->setDefinition('app.tokens.action_listener', $listener);
177+
$container->register('app.tokens.action_listener', TokenListener::class)
178+
->addArgument('%tokens%')
179+
->addTag('kernel.event_listener', array(
180+
'event' => 'kernel.controller',
181+
'method' => 'onKernelController'
182+
));
184183
185184
With this configuration, your ``TokenListener`` ``onKernelController()`` method
186185
will be executed on each request. If the controller that is about to be executed
@@ -271,18 +270,17 @@ event:
271270
272271
// app/config/services.php
273272
use AppBundle\EventListener\TokenListener;
274-
use Symfony\Component\DependencyInjection\Definition;
275273
276-
$listener = new Definition(TokenListener::class, array('%tokens%'));
277-
$listener->addTag('kernel.event_listener', array(
278-
'event' => 'kernel.controller',
279-
'method' => 'onKernelController'
280-
));
281-
$listener->addTag('kernel.event_listener', array(
282-
'event' => 'kernel.response',
283-
'method' => 'onKernelResponse'
284-
));
285-
$container->setDefinition('app.tokens.action_listener', $listener);
274+
$container->register('app.tokens.action_listener', TokenListener::class)
275+
->addArgument('%tokens%')
276+
->addTag('kernel.event_listener', array(
277+
'event' => 'kernel.controller',
278+
'method' => 'onKernelController'
279+
))
280+
->addTag('kernel.event_listener', array(
281+
'event' => 'kernel.response',
282+
'method' => 'onKernelResponse'
283+
));
286284
287285
That's it! The ``TokenListener`` is now notified before every controller is
288286
executed (``onKernelController()``) and after every controller returns a response

form/create_custom_field_type.rst

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -327,15 +327,11 @@ the ``genders`` parameter value as the first argument to its to-be-created
327327
use AppBundle\Form\Type\GenderType;
328328
use Symfony\Component\DependencyInjection\Definition;
329329
330-
$container
331-
->setDefinition('app.form.type.gender', new Definition(
332-
GenderType::class,
333-
array('%genders%')
334-
))
330+
$container->register('app.form.type.gender', GenderType::class)
331+
->addArgument('%genders%')
335332
->addTag('form.type', array(
336333
'alias' => 'app_gender',
337-
))
338-
;
334+
));
339335
340336
.. tip::
341337

form/data_transformers.rst

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -408,19 +408,12 @@ it's recognized as a custom field type:
408408
409409
// app/config/services.php
410410
use AppBundle\Form\IssueSelectorType;
411-
use Symfony\Component\DependencyInjection\Definition;
412411
use Symfony\Component\DependencyInjection\Reference;
413412
// ...
414413
415-
$container
416-
->setDefinition('app.type.issue_selector', new Definition(
417-
IssueSelectorType::class,
418-
array(
419-
new Reference('doctrine.orm.entity_manager'),
420-
)
421-
))
422-
->addTag('form.type')
423-
;
414+
$container->register('app.type.issue_selector', IssueSelectorType::class)
415+
->addArgument(new Reference('doctrine.orm.entity_manager'))
416+
->addTag('form.type');
424417
425418
Now, whenever you need to use your special ``issue_selector`` field type,
426419
it's quite easy::

form/dynamic_form_modification.rst

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -403,12 +403,9 @@ it with :ref:`dic-tags-form-type`.
403403
use AppBundle\Form\Type\FriendMessageFormType;
404404
use Symfony\Component\DependencyInjection\Reference;
405405
406-
$definition = new Definition(FriendMessageFormType::class, array(
407-
new Reference('security.token_storage')
408-
));
409-
$definition->addTag('form.type', array('alias' => 'app_friend_message'));
410-
411-
$container->setDefinition('app.form.friend_message', $definition);
406+
$container->register('app.form.friend_message', FriendMessageFormType::class)
407+
->addArgument(new Reference('security.token_storage'))
408+
->addTag('form.type', array('alias' => 'app_friend_message'));
412409
413410
If you wish to create it from within a service that has access to the form factory,
414411
you then use::

0 commit comments

Comments
 (0)