parent dans une fonction
<?php
class W {}
class X extends W {}
$x = new X;
$f = function () { return parent::class; };
print $f->call($x);
//function foo(parent $p) { return $this; }
?>
parent ne doit se trouver qu’à l’intérieur d’une classe, car il fait référence à la classe parente. Cela ne se produit pas avec une fonction, donc la deuxième ligne de cet exemple produit une erreur fatale.
Cela ne produit pas la même erreur avec une Closure ou une fonction fléchée. Ce code est valide parce qu’il est possible de changer l’objet sous-jacent de la closure et de lui donner une classe valide pour l’exécuter. Cela se fait avec les méthodes Closure::call() et Closure::bindTo().
Le problème principal, dans cette situation, est qu’un tel code est invalide à l’endroit où il est écrit, et devient valide plus tard, après une reconfiguration. Parfois, l’analyse statique peine à suivre.
See Also
PHP Error Messages
PHP Features
Last updated: 11 October 2026