Le paramètre facultatif $xxx après $yyy est obligatoire
P粉764836448
P粉764836448 2023-08-15 21:10:56
0
2
594
<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粉764836448
P粉764836448

répondre à tous(2)
P粉616383625

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;
}
P粉451614834

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;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal