L'attribut Deprecated

(PHP 8 >= 8.4.0)

Introduction

Cet attribut est utilisé pour marquer une fonctionnalité comme obsolète. L'utilisation d'une fonctionnalité obsolète entraînera l'émission d'une erreur E_USER_DEPRECATED.

À partir de PHP 8.5.0, cet attribut peut également être appliqué aux traits et aux constantes de compilation déclarées en dehors d'une classe.

Synopsis de la classe

/* Propriétés */
public readonly ?string $message;
public readonly ?string $since;
/* Méthodes */
public function __construct(?string $message = null, ?string $since = null)
}

Propriétés

message

Un message optionnel expliquant la raison de l'obsolescence et la fonctionnalité de remplacement possible. Sera inclus dans le message d'obsolescence émis.

since

Une chaîne optionnelle indiquant depuis quand la fonctionnalité est obsolète. Le contenu n'est pas validé par PHP et peut contenir un numéro de version, une date ou toute autre valeur considérée comme appropriée. Sera inclus dans le message d'obsolescence émis.

Une fonctionnalité qui fait partie de PHP utilisera Major.Minor comme valeur de since, par exemple '8.4'.

Exemples

<?php

#[\Deprecated(message: "use safe_replacement() instead", since: "1.5")]
function unsafe_function()
{
   echo "This is unsafe", PHP_EOL;
}

unsafe_function();

?>

La sortie de l'exemple ci-dessus en PHP 8.4 est similaire à :

Deprecated: Function unsafe_function() is deprecated since 1.5, use safe_replacement() instead in example.php on line 9
This is unsafe

Historique

Version Description
8.5.0 Deprecated peut désormais être appliqué aux traits et aux constantes de compilation déclarées en dehors d'une classe, ces dernières via la nouvelle cible Attribute::TARGET_CONSTANT.

Sommaire

+add a note

User Contributed Notes 1 note

up
0
miqrogroove at gmail dot com
15 days ago
Here is a bit of wisdom from the Attribute parser:

Fatal error: Attribute "Deprecated" cannot target parameter (allowed targets: function, method, class constant)

<?php
function unsafe_function(
   #[\Deprecated(message: "don't use hello param anymore", since: "1.5")]
   string $hello,
) {
   echo "This is unsafe", PHP_EOL;
}