PHP 8.1.31 Released!

ReflectionFunctionAbstract::getClosureThis

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

ReflectionFunctionAbstract::getClosureThisRetourne l'objet qui correspond à $this à l'intérieur d'une closure

Description

public ReflectionFunctionAbstract::getClosureThis(): ?object

Si la fonction est une fermeture non-statique, récupère l'objet lié à $this à l'intérieur de la fermeture.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Renvoie l'instance d'objet représentée par $this à l'intérieur de la Closure. Si la fonction n'est pas une closure ou si elle n'a pas de $this, 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