Modification du mécanisme de traitement des paramètres



1. La dénomination des paramètres en double n'est plus prise en charge.

La dénomination des paramètres en double n'est plus prise en charge. Par exemple, le code suivant signalera une erreur lors de son exécution :

public function foo($a, $b, $unused, $unused) {
          // ...
}
NDLR : personne ne devrait l'utiliser de cette façon.

2. Les ajustements aux méthodes func_get_arg et func_get_args()

func_get_arg() et func_get_args() renvoient la valeur actuelle du paramètre, pas la valeur lorsqu'elle est transmise. La valeur actuelle peut être modifiée

function foo($x) 
{
    $x++;
    var_dump(func_get_arg(0));
}
foo(1);
Le code ci-dessus imprimera 2 au lieu de 1. Si vous souhaitez imprimer la valeur originale, ajustez simplement l'ordre des appels.

3. Lors de l'impression des informations de traçabilité des exceptions, la valeur modifiée est également affichée.

function foo($x) 
{
    $x = 42;
    throw new Exception;
}
foo("string");

PHP7的运行结果:Stack trace:
#0 file.php(4): foo(42)
#1 {main}

PHP5的运行结果:Stack trace:
#0 file.php(4): foo('string')
#1 {main}
Cet ajustement n'affectera pas le comportement du code, mais vous devez faire attention à ce changement lors du débogage.

Les autres fonctions liées aux paramètres sont soumises au même ajustement, comme debug_backtrace().