Lors de l'exécution de fonctions/méthodes en obtenant des noms de fonctions/méthodes via des variables en PHP5 et PHP7, le même code peut ne pas s'exécuter en raison de stratégies d'interprétation différentes entre les versions.
Exemple
$a = ['add', 'sub']; class Test { public function add() { echo 1 + 2; } } $t = new Test(); $t->$a[0]();
L'exemple ci-dessus peut s'exécuter normalement sous PHP5.6, mais sous PHP7, il générera une erreur fatale : le nom de la fonction doit être une chaîne. En effet, lorsque $t->$a0 est exécuté sous PHP5, $a[0] sera exécuté en premier, la valeur de l'élément est obtenue, puis la méthode spécifique. de l'objet est exécuté.
Sous PHP7, $t->$a sera exécuté en premier, provoquant une erreur et une interruption de l'exécution. Si vous devez l'exécuter normalement sous PHP7, vous devez le modifier en $t->{$a[0]}().
Pour des différences spécifiques, veuillez vous référer à :
Pour plus de contenu lié à la programmation, veuillez faire attention au site Web chinois php Introduction à la programmationChronique !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!