Пометить функцию (метод) как deprecated

Пометить функцию (метод) как «устаревшее» можно через атрибут «Deprecated» (работает начиная с версии PHP 8.4).

#[\Deprecated]
function testFunction() {
  return '12345';
}

testFunction(); // Deprecated: Function testFunction() is deprecated in /path/script.php on line 5

Теперь при вызове функции testFunction() будет выводится предупреждение, что функция является устаревшей (если включен вывод ошибок).

Также можно указывать свой текст.

#[\Deprecated("Вместо данной функции используйте output()")]
function testFunction() {
  return '12345';
}

testFunction();
// Deprecated: Function testFunction() is deprecated, Вместо данной функции используйте output() in /path/script.php on line 5

Указать версию или дату, начиная с которой функция является устаревшей, можно через параметр since:

#[\Deprecated(since: "2.4 (05.02.2025)")]
function testFunction() {
  return '12345';
}

testFunction();
// Deprecated: Function testFunction() is deprecated since 2.4 (05.02.2025) in /path/script.php on line 5

Пометить методы, свойства и константы как derecated

Данный атрибут можно также задавать методам и константам классов:

class Lang
{
  public $name = 'PHP';
    
  #[\Deprecated]
  public const VERS = '8.4';
    
  #[\Deprecated]
  public function getVers()
  {
    return $this->vers;
  }
}

$lang = new Lang();
$lang::VERS; // Deprecated: Constant Lang::VERS is deprecated
$lang->getVers(); // Deprecated: Method Lang::getVers() is deprecated

При этом если задать атрибут свойству, то PHP вернёт ошибку:

class Lang
{
  #[\Deprecated]
  public $name = 'PHP';
}

// Fatal error: Attribute "Deprecated" cannot target property (allowed targets: function, method, class constant) in /home/user/scripts/code.php on line 4