(PHP 5 >= 5.4.0, PHP 7, PHP 8)
ReflectionFunctionAbstract::getClosureScopeClass — Retourne la classe correspondant au contexte interne d'une fermeture
Retourne la classe sous forme de ReflectionClass qui correspond au contexte interne de la Closure.
Cette fonction ne contient aucun paramètre.
Retourne une ReflectionClass correspondant à la classe
dont le contexte est utilisé à l'intérieur de la Closure.
Si la fonction n'est pas une closure ou si elle a un contexte global,
null
est renvoyé à la place.
Exemple #1 Exemple illustrant la différence entre ReflectionFunctionAbstract::getClosureCalledClass(), ReflectionFunctionAbstract::getClosureScopeClass(), et ReflectionFunctionAbstract::getClosureThis() avec une méthode d'instance
<?php
class A {
public function getClosure() {
var_dump(self::class, static::class);
return function () {
};
}
}
class B extends A {
}
$b = new B();
$c = $b->getClosure();
$r = new ReflectionFunction($c);
var_dump($r->getClosureThis()); // $this === $b
var_dump($r->getClosureScopeClass()); // self::class
var_dump($r->getClosureCalledClass()); // static::class
?>
L'exemple ci-dessus va afficher :
string(1) "A" string(1) "B" object(B)#1 (0) { } object(ReflectionClass)#4 (1) { ["name"]=> string(1) "A" } object(ReflectionClass)#4 (1) { ["name"]=> string(1) "B" }
Exemple #2 Exemple illustrant la différence entre ReflectionFunctionAbstract::getClosureCalledClass(), ReflectionFunctionAbstract::getClosureScopeClass(), et ReflectionFunctionAbstract::getClosureThis() avec une méthode statique
<?php
class A {
public function getClosure() {
var_dump(self::class, static::class);
return static function () {
};
}
}
class B extends A {
}
$b = new B();
$c = $b->getClosure();
$r = new ReflectionFunction($c);
var_dump($r->getClosureThis()); // NULL
var_dump($r->getClosureScopeClass()); // self::class
var_dump($r->getClosureCalledClass()); // static::class
?>
L'exemple ci-dessus va afficher :
string(1) "A" string(1) "B" NULL object(ReflectionClass)#4 (1) { ["name"]=> string(1) "A" } object(ReflectionClass)#4 (1) { ["name"]=> string(1) "B" }