@@ -218,3 +218,56 @@ You can change the inner service name if you want to:
218
218
->addArgument(new Reference('bar.wooz'))
219
219
->setPublic(false)
220
220
->setDecoratedService('foo', 'bar.wooz');
221
+
222
+ Deprecating Services
223
+ --------------------
224
+
225
+ Once you have decided to deprecate the use of a service (because it is outdated,
226
+ or you decided not to use and maintain it anymore), you can deprecate its
227
+ definition:
228
+
229
+ .. configuration-block ::
230
+
231
+ .. code-block :: yaml
232
+
233
+ bar :
234
+ class : stdClass
235
+ deprecated : true
236
+ deprecation_template : The "%service_id%" service is deprecated since 2.8, and will be removed in 3.0.
237
+
238
+ .. code-block :: xml
239
+
240
+ <service id =" bar" class =" stdClass" >
241
+ <deprecated >The "%service_id%" service is deprecated since 2.8, and will be removed in 3.0.</deprecated >
242
+ </service >
243
+
244
+ .. code-block :: php
245
+
246
+ use Symfony\Component\DependencyInjection\Reference;
247
+
248
+ $container->register('bar', 'stdClass')
249
+ ->setDeprecated(true, 'The "%service_id%" service is deprecated since 2.8, and will be removed in 3.0.');
250
+
251
+ Now, every time a service is created using this deprecated definition will
252
+ trigger a deprecation error, advising you to stop or change your uses of that
253
+ service.
254
+
255
+ .. note ::
256
+ The deprecation message is optional. If not set, Symfony will show a default
257
+ message ``The "%service_id%" service is deprecated. You should stop using it,
258
+ as it will soon be removed. ``.
259
+
260
+ .. note ::
261
+ The message is actually a message template, which will replace occurrences
262
+ of ``%service_id% `` by the service's id. You **must ** have at least one
263
+ occurrence of ``%service_id% `` placeholder in your template.
264
+
265
+ .. note ::
266
+ It is strongly recommended that you fill the message template, to avoid a
267
+ message that could be too generic such as the default one. A good message
268
+ informs when this service was deprecated, and until when it will be
269
+ maintained (look at the examples above).
270
+
271
+ For services decorators (see above), if the definition does not modify the
272
+ deprecated status, it will inherit the status from the definition that is
273
+ decorated.
0 commit comments