PHP bindet immer die Eltern this
und scope
an neu erstellte Schließungen. Der Unterschied zwischen einem statischen Abschluss und einem nicht statischen Abschluss besteht darin, dass ein statischer Abschluss scope
(! = NULL) hat, aber nicht this
bei create time .
Ein Abschluss auf "oberster Ebene" hat weder this
noch scope
.
Daher muss man beim Erstellen des Verschlusses den Bereich loswerden. Glücklicherweise erlaubt bindTo
genau das, sogar für statische Schließungen:
Sieht so aus, als wäre dies möglicherweise nicht möglich, aus Closure :: bindTo Dokumentation
Statische Closures können kein gebundenes Objekt haben (der Wert des Parameters newthis sollte NULL sein), aber diese Funktion kann dennoch verwendet werden, um ihren Klassenbereich zu ändern.