Ich bin mir nicht sicher, ob ich das richtig gemacht habe.
So wie ich es verstehe:
Wenn ich eine Klasse foo und eine statische Methodenleiste habe, kann ich dies als Rückruf registrieren, indem ich das Array array("foo","bar")
als Funktionsnamen übergebe.
Wenn ich eine Instanz einer Klasse in $ foo habe und die Methodenleiste aufrufen möchte, übergebe ich das Array array($foo,'bar')
.
Wenn ich eine Aktion innerhalb der Klasse selbst registrieren muss, funktioniert das dann array($this,'bar')
?
Antworten:
Ja es funktioniert.
$this
Docs bezieht sich auf die konkrete Instanz, die für den Rückruf benötigt wird . Das ist genau wie das$foo
Beispiel, das Sie geben. Es ist nur$this
etwas spezieller, aber es stellt im Grunde das Gleiche dar und es funktioniert einwandfrei mit Rückrufen in PHP.Zusätzlich:
Ja, Sie können dies tun. Für die statische Funktion können Sie sie auch als Zeichenfolge anstelle des Arrays schreiben:
foo::bar
siehe Callbacks- Dokumentation . Könnte praktisch sein.quelle
Für statische Methoden können Sie dies auch tun:
wenn Undefined class constant 'bar' ergibt :
Beispiel - bei der Angabe von $ control_callback für
wp_add_dashboard_widget
quelle