Maison >développement back-end >tutoriel php >Pourquoi les paramètres de fonction PHP 8.0 obligatoires doivent-ils désormais précéder ceux facultatifs ?

Pourquoi les paramètres de fonction PHP 8.0 obligatoires doivent-ils désormais précéder ceux facultatifs ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-30 08:54:11121parcourir

Why Are Required PHP 8.0 Function Parameters Now Required to Precede Optional Ones?

Changements de syntaxe des paramètres de fonction PHP 8.0 : les paramètres obligatoires doivent précéder les paramètres facultatifs

PHP 8.0 introduit un avertissement de dépréciation lorsqu'un paramètre de fonction obligatoire suit un paramètre facultatif. Cette erreur se produit car les anciennes versions de PHP autorisaient ce comportement, ce qui n'avait aucun sens puisque tous les paramètres jusqu'au dernier requis devaient être spécifiés.

Exemple :

Considérez la fonction suivante :

function test_function(int $var1 = 2, int $var2) {
    return $var1 / $var2;
}

En PHP 8.0, cette fonction générera la dépréciation suivante avertissement :

Deprecated: Required parameter $var2 follows optional parameter $var1 in...

Raison de la dépréciation :

Ce changement garantit que les signatures de fonction adhèrent à l'hypothèse de bon sens selon laquelle les paramètres obligatoires doivent être déclarés avant les paramètres facultatifs. Cela clarifie le comportement de la fonction et simplifie l'analyse à l'aide de la classe ReflectionFunctionAbstract.

Solution :

Pour résoudre ce problème, supprimez simplement la valeur par défaut des paramètres précédents. Pour l'exemple ci-dessus, la fonction serait réécrite comme :

function test_function(int $var1, int $var2) {
    return $var1 / $var2;
}

Ce changement ne devrait pas affecter la fonctionnalité de la fonction car elle ne pourrait jamais être appelée sans déclarer tous les paramètres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn