Ich bin ein Neuling bei PHP und WordPress, also sei bitte sanft!
Ich baue ein Plugin - folge ein paar Tutorials, damit alles funktioniert.
Meine Frage ist, warum die Funktion, die ich aufrufen möchte, in der Funktion eingeschlossen ist array($this, function)
. Zum Beispiel habe ich diesen Konstruktorcode in meiner Klasse
function __construct() {
add_action( 'admin_init',array( $this, 'getStuffDone' ) );
}
Die Funktion getStuffDone wird OK ausgelöst - aber warum muss sie das Format haben, in dem sie vorliegt?
Jeder Einblick wird sehr geschätzt.
add_action
mit Klasse und PHPAntworten:
Es ist ein PHP-Rückruf . Sie benötigen die Syntax, um einen Verweis auf die Klasseninstanz beizubehalten.
Sagen wir es so - wenn nicht
$this
, woher weiß der Anrufer, dass diesgetStuffDone
eine Methode Ihrer Klasse ist und nicht nur eine reguläre PHP-Funktion? Das tut es nicht.Verwenden
array( $this, 'getStuffDone' )
sagt zu PHP:quelle
except language constructs such as: array()
, aber hier übergeben wir ein Array. Ist das ein Tippfehler oder lese ich den Satz falsch?Die Funktionsdefinition von add_action () sieht folgendermaßen aus:
demnach sieht es so aus, als würde es erwartet (string, string, int, int)
In einer herkömmlichen PHP-Datei wäre der zweite Parameter einfach einer Ihrer Funktionsnamen.
so hättest du
add_action('admin_init','my_init_function')
Es sieht so aus, als würden Sie eine Klasse verwenden, um Ihr Plugin zu kapseln. Andere Klassen können Funktionen mit demselben Namen enthalten ( getStuffDone ).
Ihre Funktion ist also nur unter Bezugnahme auf Ihre Klasse bekannt. Deshalb müssen Sie Ihre Klasse
$this
sowie den Funktionsnamen angeben .Wenn Sie versuchen, auf eine Funktion innerhalb einer Klasse zu verweisen, müssen Sie eine aufrufbare Array-Syntax verwenden
Siehe auch codex.wordpress.org
quelle
Siehe die Dokumentation unter " Vom Benutzer beigesteuerte Hinweise ":
quelle