Warum müssen Sie eine function in Array umbrechen ($ this, function)

Ich bin ein Neuling bei PHP und WordPress, also sei bitte sanft!

Ich baue ein Plugin – nach ein paar Tutorials, alles funktioniert.

Meine Frage ist, warum die function, die ich aufrufen möchte, im Array verpackt ist ($ this, function)? Zum Beispiel habe ich diesen Konstruktorcode in meiner class

function __construct() { add_action( 'admin_init',array( $this, 'getStuffDone' ) ); } 

Die function getStuffDone wird ok ausgetriggers – aber warum muss sie in dem Format sein, in dem sie sich befindet?

Jede Einsicht ist sehr begrenzt

Solutions Collecting From Web of "Warum müssen Sie eine function in Array umbrechen ($ this, function)"

Die functionsdefinition add_action () sieht folgendermaßen aus:

  function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) { return add_filter($tag, $function_to_add, $priority, $accepted_args); } 

entsprechend sieht es so aus wie es erwartet (string, string, int, int)

In einer herkömmlichen PHP-Datei wäre der zweite Parameter einfach einer Ihrer functionsnamen.

also hättest du add_action('admin_init','my_init_function')

Es sieht so aus, als ob Sie eine class verwenden, um Ihr Plugin zu kapseln.

Ihre function ist also nur innerhalb Ihrer class bekannt, deshalb müssen Sie sowohl Ihre class $this als auch den functionsnamen angeben.

Wenn Sie versuchen, auf eine function innerhalb einer class zu verweisen, müssen Sie die aufrufbare Array-Syntax verwenden

Siehe auch codex.wordpress.org

Es ist ein PHP-callback . Sie benötigen die Syntax, um einen Verweis auf die classninstanz zu behalten.

Sagen Sie es so: Wenn Sie $this nicht hatten, wie weiß der Aufrufer, dass getStuffDone eine Methode Ihrer class ist und nicht nur eine normale PHP-function? Es tut es nicht.

Das Verwenden von array( $this, 'getStuffDone' ) sagt zu PHP:

Hey Bruder, du musst die Methode getStuffDone für diese Instanz meiner class getStuffDone