Rendre obsolète une fonction

Lorsqu'on ajoute des fonctionnalités à une application, on peut être amené à vouloir supprimer une fonction. Une bonne pratique est de d'abord rendre obsolète cette fonction avant de la supprimer. Cela est censé laisser le temps aux développeurs d'adapter le code qui utilise cette fonction.

Par exemple dans le code de Phyxo, j'ai la fonction suivante :

function get_moment()
{
    return microtime(true);
}

Dans le cadre de la tâche de simplification du code de Phyxo, je vais rendre cette fonction obsolète de la manière suivante :

/**
* @deprecated since 1.9.0 and will be removed in 1.10 or 2.0
*/
function get_moment()
{
    trigger_error('get_moment function is deprecated. Use microtime instead.', E_USER_DEPRECATED);

    return microtime(true);
}

L'annotation @deprecated est une aide dans de nombreux éditeurs qui signale au développeur qu'il est déconseillé d'utiliser cette fonction. Mais évidemment il faut l'utiliser une nouvelle fois ou alors aller voir la fonction. Le fait d'utiliser trigger_error permet de remonter le problème de manière plus évidente aux yeux du développeur, sous la forme d'un avertissement dans la page web ou dans les logs si les avertissements ne sont pas affichés. Utilisant désormais Symfony dans la barre de debug on a aussi cette information :

deprecated.png

Et si on clique sur le lien pour avoir plus d'informations, on peut voir quelque chose comme ça :

deprecated_menu.png

Cela fonctionne aussi bien pour les fonctions que l'on marque comme obsolètes ou les fonctions natives du langage.

Haut de page