@@ -218,3 +218,56 @@ You can change the inner service name if you want to:
218218 ->addArgument(new Reference('bar.wooz'))
219219 ->setPublic(false)
220220 ->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.