Maison > Questions et réponses > le corps du texte
Deprecated: Required parameter $xxx follows optional parameter $yyy in...
Depuis la mise à niveau vers PHP 8.0, cette erreur est générée lors de l'exécution du code suivant :
function test_function(int $var1 = 2, int $var2) { return $var1 / $var2; }
Cela fonctionnait sans problème dans les versions précédentes de PHP.
P粉0215534602023-10-19 10:29:39
Les paramètres requis sans valeurs par défaut doivent venir en premier.
function test_function(int $xxx, int $yyy = 2) { return $xxx * $yyy; }
P粉4278776762023-10-19 00:33:30
Cette façon de déclarer les fonctionsest obsolète dans PHP 8.0. Cela n'a jamais de sens d'écrire une fonction comme celle-ci car tous les arguments (jusqu'au dernier, qui est obligatoire) doivent être spécifiés lors de l'appel de la fonction. Il utilise également la classe Causing confusion ::getNumberOfRequiredParameters" rel="noreferrer">ReflectionFunctionAbstract
pour analyser les fonctions et les méthodes.
La nouvelle dépréciation garantit simplement que les signatures de fonctions suivent l'hypothèse de bon sens selon laquelle les paramètres obligatoires qui doivent être présents doivent toujours être déclarés avant les paramètres facultatifs.
Cette fonction doit être réécrite pour supprimer les valeurs par défaut des paramètres antérieurs. Puisque la fonction ne peut jamais être appelée sans déclarer tous les arguments, cela ne devrait avoir aucun effet sur sa fonctionnalité.
function test_function(int $var1, int $var2) { return $var1 / $var2; }