Skip to content

Commit b9ef3c0

Browse files
committed
Merge branch '2.8' into 3.2
* 2.8: (22 commits) Update options_resolver.rst Fixed a minor typo Fixed a minor typo add labels for old headlines fix versionadded directives Removed "encryption" and "auth_mode" from the list of %env()% compatible options Fixed ... again ... the versionadded directives Added the missing "versionadded" directives add mail transport as deprecated Minor tweaks update swiftmailer reference Replace calls to setDefinition() by register() [PhpUnitBridge] fix Stopwatch API usage use namespaced PHPUnit TestCase class Better explain empty_data values Readd mixed type for empty_data, it can be string, array or object Tried to write the important points more explicitly Updated the example add added a caution Addressed @stof's comment improved accuracy ...
2 parents a360e3c + 03969ea commit b9ef3c0

Some content is hidden

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

44 files changed

+297
-381
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

components/options_resolver.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ the ``Mailer`` class makes a mistake?
9090
.. code-block:: php
9191
9292
$mailer = new Mailer(array(
93-
'usernme' => 'johndoe', // usernAme misspelled
93+
'usernme' => 'johndoe', // usernme misspelled (instead of username)
9494
));
9595
9696
No error will be shown. In the best case, the bug will appear during testing,

components/phpunit_bridge.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,9 @@ If you have this kind of time-related tests::
192192
{
193193
$stopwatch = new Stopwatch();
194194

195-
$stopwatch->start();
195+
$stopwatch->start('event_name');
196196
sleep(10);
197-
$duration = $stopwatch->stop();
197+
$duration = $stopwatch->stop('event_name')->getDuration();
198198

199199
$this->assertEquals(10, $duration);
200200
}

console/logging.rst

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -107,21 +107,14 @@ First configure a listener for console exception events in the service container
107107
108108
// app/config/services.php
109109
use AppBundle\EventListener\ConsoleExceptionListener;
110-
use Symfony\Component\DependencyInjection\Definition;
111110
use Symfony\Component\DependencyInjection\Reference;
112111
113-
$definitionConsoleExceptionListener = new Definition(
114-
ConsoleExceptionListener::class,
115-
array(new Reference('logger'))
116-
);
117-
$definitionConsoleExceptionListener->addTag(
118-
'kernel.event_listener',
119-
array('event' => 'console.exception')
120-
);
121-
$container->setDefinition(
122-
'app.listener.command_exception',
123-
$definitionConsoleExceptionListener
124-
);
112+
$container->register('app.listener.command_exception', ConsoleExceptionListener::class)
113+
->addArgument(new Reference('logger'))
114+
->addTag(
115+
'kernel.event_listener',
116+
array('event' => 'console.exception')
117+
);
125118
126119
Then implement the actual listener::
127120

@@ -208,21 +201,14 @@ First configure a listener for console terminate events in the service container
208201
209202
// app/config/services.php
210203
use AppBundle\EventListener\ErrorLoggerListener;
211-
use Symfony\Component\DependencyInjection\Definition;
212204
use Symfony\Component\DependencyInjection\Reference;
213205
214-
$definitionErrorLoggerListener = new Definition(
215-
ErrorLoggerListener::class,
216-
array(new Reference('logger'))
217-
);
218-
$definitionErrorLoggerListener->addTag(
219-
'kernel.event_listener',
220-
array('event' => 'console.terminate')
221-
);
222-
$container->setDefinition(
223-
'app.listener.command_error',
224-
$definitionErrorLoggerListener
225-
);
206+
$container->register('app.listener.command_error', ErrorLoggerListener::class)
207+
->addArgument(new Reference('logger'))
208+
->addTag(
209+
'kernel.event_listener',
210+
array('event' => 'console.terminate')
211+
);
226212
227213
Then implement the actual listener::
228214

controller/error_pages.rst

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -296,13 +296,12 @@ In that case, you might want to override one or both of the ``showAction()`` and
296296
// app/config/services.php
297297
use AppBundle\Controller\CustomExceptionController;
298298
use Symfony\Component\DependencyInjection\Reference;
299-
use Symfony\Component\DependencyInjection\Definition;
300299
301-
$definition = new Definition(CustomExceptionController::class, array(
302-
new Reference('twig'),
303-
'%kernel.debug%'
304-
));
305-
$container->setDefinition('app.exception_controller', $definition);
300+
$container->register('app.exception_controller', CustomExceptionController::class)
301+
->setArguments(array(
302+
new Reference('twig'),
303+
'%kernel.debug%',
304+
));
306305
307306
And then configure ``twig.exception_controller`` using the controller as
308307
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
@@ -226,13 +226,10 @@ argument:
226226
227227
// app/config/services.php
228228
use AppBundle\Controller\HelloController;
229-
use Symfony\Component\DependencyInjection\Definition;
230229
use Symfony\Component\DependencyInjection\Reference;
231230
232-
$container->setDefinition('app.hello_controller', new Definition(
233-
HelloController::class,
234-
array(new Reference('templating'))
235-
));
231+
$container->register('app.hello_controller', HelloController::class)
232+
->addArgument(new Reference('templating'));
236233
237234
Rather than fetching the ``templating`` service from the container, you can
238235
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
@@ -283,13 +283,10 @@ Then, define a service for this class:
283283
284284
// app/config/services.php
285285
use AppBundle\FileUploader;
286-
use Symfony\Component\DependencyInjection\Definition;
287286
288287
// ...
289-
$container->setDefinition('app.brochure_uploader', new Definition(
290-
FileUploader::class,
291-
array('%brochures_directory%')
292-
));
288+
$container->register('app.brochure_uploader', FileUploader::class)
289+
->addArgument('%brochures_directory%');
293290
294291
Now you're ready to use this service in the controller::
295292

@@ -411,21 +408,17 @@ Now, register this class as a Doctrine listener:
411408
412409
// app/config/services.php
413410
use AppBundle\EventListener\BrochureUploaderListener;
414-
use Symfony\Component\DependencyInjection\Definition;
415411
use Symfony\Component\DependencyInjection\Reference;
416412
417413
// ...
418-
$definition = new Definition(
419-
BrochureUploaderListener::class,
420-
array(new Reference('brochures_directory'))
421-
);
422-
$definition->addTag('doctrine.event_listener', array(
423-
'event' => 'prePersist',
424-
));
425-
$definition->addTag('doctrine.event_listener', array(
426-
'event' => 'preUpdate',
427-
));
428-
$container->setDefinition('app.doctrine_brochure_listener', $definition);
414+
$container->register('app.doctrine_brochure_listener', BrochureUploaderListener::class)
415+
->addArgument(new Reference('brochures_directory'))
416+
->addTag('doctrine.event_listener', array(
417+
'event' => 'prePersist',
418+
))
419+
->addTag('doctrine.event_listener', array(
420+
'event' => 'prePersist',
421+
));
429422
430423
This listener is now automatically executed when persisting a new Product
431424
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
@@ -52,6 +52,8 @@ To use it, you just need to change some parameters in the main configuration fil
5252
5353
// app/config/config.php
5454
55+
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
56+
5557
// ...
5658
$container->loadFromExtension('framework', array(
5759
// ...
@@ -61,11 +63,11 @@ To use it, you just need to change some parameters in the main configuration fil
6163
),
6264
));
6365
64-
$storageDefinition = new Definition(PdoSessionHandler::class, array(
65-
'mysql:dbname=mydatabase',
66-
array('db_username' => 'myuser', 'db_password' => 'mypassword')
67-
));
68-
$container->setDefinition('session.handler.pdo', $storageDefinition);
66+
$container->register('session.handler.pdo', PdoSessionHandler::class)
67+
->setArguments(array(
68+
'mysql:dbname=mydatabase',
69+
array('db_username' => 'myuser', 'db_password' => 'mypassword'),
70+
));
6971
7072
Configuring the Table and Column Names
7173
--------------------------------------
@@ -106,15 +108,14 @@ a second array argument to ``PdoSessionHandler``:
106108
107109
// app/config/config.php
108110
109-
use Symfony\Component\DependencyInjection\Definition;
110111
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
111112
// ...
112113
113-
$storageDefinition = new Definition(PdoSessionHandler::class, array(
114-
'mysql:dbname=mydatabase',
115-
array('db_table' => 'sessions', 'db_username' => 'myuser', 'db_password' => 'mypassword')
116-
));
117-
$container->setDefinition('session.handler.pdo', $storageDefinition);
114+
$container->register('session.handler.pdo', PdoSessionHandler::class)
115+
->setArguments(array(
116+
'mysql:dbname=mydatabase',
117+
array('db_table' => 'sessions', 'db_username' => 'myuser', 'db_password' => 'mypassword'),
118+
));
118119
119120
These are parameters that you must configure:
120121

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: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -324,13 +324,9 @@ the ``genders`` parameter value as the first argument to its to-be-created
324324
325325
// src/AppBundle/Resources/config/services.php
326326
use AppBundle\Form\Type\GenderType;
327-
use Symfony\Component\DependencyInjection\Definition;
328327
329-
$container
330-
->setDefinition('app.form.type.gender', new Definition(
331-
GenderType::class,
332-
array('%genders%')
333-
))
328+
$container->register('app.form.type.gender', GenderType::class)
329+
->addArgument('%genders%')
334330
->addTag('form.type')
335331
;
336332

0 commit comments

Comments
 (0)