Skip to content

Commit 879347c

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

38 files changed

+209
-364
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('%brochures_directory%');
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/event_listeners_subscribers.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ managers that use this connection.
8484
use AppBundle\EventListener\SearchIndexer;
8585
use AppBundle\EventListener\SearchIndexer2;
8686
use AppBundle\EventListener\SearchIndexerSubscriber;
87-
use Symfony\Component\DependencyInjection\Definition;
8887
8988
$container->loadFromExtension('doctrine', array(
9089
'dbal' => array(

doctrine/mongodb_session_storage.rst

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ need to change/add some parameters in the main configuration file:
7777
.. code-block:: php
7878
7979
use Symfony\Component\DependencyInjection\Reference;
80-
use Symfony\Component\DependencyInjection\Definition;
8180
use Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler;
8281
8382
$container->loadFromExtension('framework', array(
@@ -89,20 +88,19 @@ need to change/add some parameters in the main configuration file:
8988
),
9089
));
9190
92-
$container->setDefinition('mongo_client', new Definition(
93-
\MongoClient::class,
94-
array(
91+
$container->register('mongo_client', \MongoClient::class)
92+
->setArguments(array(
9593
// if using a username and password
9694
array('mongodb://%mongodb_username%:%mongodb_password%@%mongodb_host%:27017'),
9795
// if not using a username and password
9896
array('mongodb://%mongodb_host%:27017'),
99-
)
100-
));
97+
));
10198
102-
$container->setDefinition('session.handler.mongo', new Definition(
103-
MongoDbSessionHandler::class,
104-
array(new Reference('mongo_client'), '%mongo.session.options%')
105-
));
99+
$container->register('session.handler.mongo', MongoDbSessionHandler::class)
100+
->setArguments(array(
101+
new Reference('mongo_client'),
102+
'%mongo.session.options%',
103+
));
106104
107105
The parameters used above should be defined somewhere in your application, often in your main
108106
parameters configuration:
@@ -149,7 +147,6 @@ parameters configuration:
149147
.. code-block:: php
150148
151149
use Symfony\Component\DependencyInjection\Reference;
152-
use Symfony\Component\DependencyInjection\Definition;
153150
154151
$container->setParameter('mongo.session.options', array(
155152
'database' => 'session_db', // your MongoDB database name

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 & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -325,17 +325,12 @@ the ``genders`` parameter value as the first argument to its to-be-created
325325
326326
// src/AppBundle/Resources/config/services.php
327327
use AppBundle\Form\Type\GenderType;
328-
use Symfony\Component\DependencyInjection\Definition;
329328
330-
$container
331-
->setDefinition('app.form.type.gender', new Definition(
332-
GenderType::class,
333-
array('%genders%')
334-
))
329+
$container->register('app.form.type.gender', GenderType::class)
330+
->addArgument('%genders%')
335331
->addTag('form.type', array(
336332
'alias' => 'app_gender',
337-
))
338-
;
333+
));
339334
340335
.. tip::
341336

0 commit comments

Comments
 (0)