Maison  >  Questions et réponses  >  le corps du texte

Le paramètre facultatif $yyy précède le paramètre obligatoire $xxx

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粉236743689P粉236743689390 Il y a quelques jours686

répondre à tous(2)je répondrai

  • P粉021553460

    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;
    }

    répondre
    0
  • P粉427877676

    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;
    }
    

    répondre
    0
  • Annulerrépondre