Closure::bindTo

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

Closure::bindTo Dupliziert eine Closure mit einem neuen gebundenen Objekt und Geltungsbereich einer Klasse

Beschreibung

publicClosure::bindTo(?object$newThis, object|string|null$newScope = "static"): ?Closure

Erzeugt eine neue anonyme Funktion mit demselben Funktionskörper und denselben gebundenen Variablen wie diese und gibt sie zurück, aber möglicherweise mit einem anderen gebundenen Objekt und einem neuen Geltungsbereich der Klasse.

Das "gebundene Objekt" bestimmt den Wert, den $this im Funktionskörper haben wird, und der "Klassenbereich" ist eine Klasse, die bestimmt, auf welche private und protected Mitglieder die anonyme Funktion zugreifen kann. Das heißt, die für die Funktion sichtbaren Mitglieder sind dieselben, als ob die anonyme Funktion eine Methode der im Parameter newScope übergebenen Klasse wäre.

Eine statische Closure kann zwar kein Objekt binden (der Wert des Parameters newThis muss null sein), aber diese Funktion kann trotzdem verwendet werden, um den Geltungsbereich ihrer Klasse zu ändern.

Diese Funktion stellt sicher, dass eine nicht-statische Closure mit einer gebundenen Instanz einen Geltungsbereich hat und umgekehrt. Zu diesem Zweck wird eine nicht-statische Closure, der zwar ein Geltungsbereich, dafür aber nur eine eine null-Instanz gegeben wird, statisch gemacht, und eine nicht-statische Closure ohne Geltungsbereich, die eine Nicht-null-Instanz erhält, kommt in den Geltungsbereich einer nicht spezifizierte Klasse.

Hinweis:

Wenn nur anonyme Funktionen dupliziert werden sollen, kann stattdessen cloning verwendet werden.

Parameter-Liste

newThis

Das Objekt, an das die angegebene anonyme Funktion gebunden werden soll, oder null wenn die Closure nicht gebunden werden soll.

newScope

Der Bereich der Klasse, dem die Closure zugeordnet werden soll, oder 'static', um den aktuellen Bereich beizubehalten. Wenn ein Objekt angegeben wird, wird stattdessen der Typ des Objekts verwendet. Dieser bestimmt die Sichtbarkeit der protected und private Methoden des gebundenen Objekts. Es ist nicht erlaubt, eine interne Klasse (oder ein Objekt einer solchen) als Parameter zu übergeben.

Rückgabewerte

Gibt ein neu erstelltes Closure-Objekt zurück oder null, wenn ein Fehler auftritt.

Beispiele

Beispiel #1 Closure::bindTo()-Beispiel

<?php

class A
{
private
$val;

public function
__construct($val)
{
$this->val = $val;
}

public function
getClosure()
{
// Gibt eine Closure zurück, die an dieses Objekt und diesen

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

1 2

Siehe auch

To Top