PHP 8.1.31 Released!

ReflectionFunctionAbstract::getClosureScopeClass

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

ReflectionFunctionAbstract::getClosureScopeClassRetourne la classe correspondant au contexte interne d'une fermeture

Description

public ReflectionFunctionAbstract::getClosureScopeClass(): ?ReflectionClass

Retourne la classe sous forme de ReflectionClass qui correspond au contexte interne de la Closure.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

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.

Exemples

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"
}

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top