What is deprecated code?

Deprecating code is a way of identifying code that will be removed in a future major version.

For example, the drupal_set_message() function was deprecated in Drupal 8.5 and removed in Drupal 9 as the messenger service replaced it.

Once it was deprecated, the function was changed to use the new service to avoid duplicating code and a message was added to notify Developers:

function drupal_set_message($message = NULL, $type = 'status', $repeat = FALSE) {
  @trigger_error('drupal_set_message() is deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. See https://www.drupal.org/node/2774931', E_USER_DEPRECATED);

  $messenger = \Drupal::messenger();
  if (isset($message)) {
    $messenger->addMessage($message, $type, $repeat);

  return $messenger->all();

This approach means that code can be refactored without breaking backwards-compatibility and, to upgrade any custom code to be compatible with Drupal 9, any references to drupal_set_message() just needed to be updated to use the new Messenger service.

No large rewrite needed!

Was this useful? Sign up here and get more like this delivered straight to your inbox every day.