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

Le paramètre facultatif $xxx après $yyy est obligatoire

<p><br /></p> <pre class="brush:none;toolbar:false;">OBSERVÉ : le paramètre obligatoire $xxx suit le paramètre facultatif $yyy... ≪/pré> <p>Depuis la mise à niveau vers PHP 8.0, cette erreur est générée lors de l'exécution du code suivant : </p> <pre class="brush:php;toolbar:false;">function test_function(int $var1 = 2, int $var2) { renvoie $var1 / $var2 ; } ≪/pré> <p>Dans les versions précédentes de PHP, cela ne posait aucun problème. </p>
P粉764836448P粉764836448453 Il y a quelques jours588

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

  • P粉616383625

    P粉6163836252023-08-16 14:16:18

    Les paramètres requis sans valeurs par défaut doivent être placés en premier.

    function test_function(int $xxx, int $yyy = 2)
    {
        return $xxx * $yyy;
    }

    répondre
    0
  • P粉451614834

    P粉4516148342023-08-16 09:03:20

    Cette façon de déclarer les fonctions est 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 argument requis) doivent être spécifiés lors de l'appel de la fonction. Cela a également conduit à la confusion car des problèmes surviennent lors de l'utilisation de ReflectionFunctionAbstract classes pour analyser des fonctions et des 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 doivent toujours être déclarés avant les paramètres facultatifs.

    La fonction doit être réécrite pour supprimer les valeurs par défaut des paramètres précédents. Puisqu’une fonction n’est jamais appelée sans déclarer tous ses paramètres, cela n’a aucun effet sur sa fonctionnalité.

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

    répondre
    0
  • Annulerrépondre