(PHP 5 >= 5.4.0, PHP 7, PHP 8)
Closure::bind — Duplique une fermeture avec un nouvel objet lié et un nouveau contexte de classe.
$closure, ?object $newThis, object|string|null $newScope = "static"): ?ClosureCette méthode est une version statique de Closure::bindTo(). Voir sa documentation pour plus d'informations.
closureLa fonction anonyme à lier.
newThis
L'objet auquel lier la fonction anonyme, ou null pour délier.
newScopeLe contexte de classe à associer à la fermeture, ou 'static' pour conserver le contexte actuel. Si un objet est utilisé, son type sera utilisé. Ceci détermine les accès protégés et privés de l'objet lié. Il n'est pas autorisé de passer (un objet d') une classe interne pour ce paramètre.
| Version | Description |
|---|---|
| 8.5.0 |
Lier une instance à une fermeture statique, ou lier une méthode issue
d'une hiérarchie de classes incompatible, est désormais obsolète (ces
cas émettaient déjà un E_WARNING).
|
Exemple #1 Exemple Closure::bind()
<?php
class A {
private static $sfoo = 1;
private $ifoo = 2;
}
$cl1 = static function() {
return A::$sfoo;
};
$cl2 = function() {
return $this->ifoo;
};
$bcl1 = Closure::bind($cl1, null, 'A');
$bcl2 = Closure::bind($cl2, new A(), 'A');
echo $bcl1(), "\n";
echo $bcl2(), "\n";
?>Résultat de l'exemple ci-dessus est similaire à :
1 2