Registrazione dei metodi di classe come callback hook


16

Non sono sicuro di averlo fatto correttamente.

A quanto ho capito:

se ho un foo di classe e una barra del metodo statica posso registrarlo come callback passando l'array array("foo","bar")come nome della funzione.

Se ho un'istanza di una classe in $ foo e voglio chiamare la barra del metodo, passo la matrice array($foo,'bar').

Se avessi bisogno di registrare un'azione all'interno della classe stessa con cui avrebbe funzionato array($this,'bar')?


3
Un test non sarebbe più veloce di porre la domanda? ;) Si, puoi fare questo.
fuxia

2
Un test può aiutare, ma a volte cerchi anche feedback. Penso che sia giusto porre effettivamente la domanda, e c'è questa regola, mettere in discussione la motivazione dei PO ... :)
hakre

Risposte:


11

Se avessi bisogno di registrare un'azione all'interno della classe stessa con cui avrebbe funzionato array($this, 'bar')?

Sì funziona. $thisDocumenti si riferisce all'istanza concreta necessaria per il callback . È esattamente come l' $fooesempio che dai. È solo un $thispo 'più speciale, ma rappresenta sostanzialmente lo stesso e funziona perfettamente con i callback in PHP.

Ulteriori:

se ho un foo di classe e una barra del metodo statica posso registrarlo come callback passando l'array array("foo","bar")come nome della funzione.

Sì, puoi farlo, per la funzione statica, puoi scriverlo come stringa e non come matrice: foo::barvedi Callbacks Docs . Potrebbe essere utile.


1

Per i metodi statici puoi anche fare questo:

['foo','bar'] 

quando quanto segue fornisce una costante di classe non definita 'bar' :

foo::bar

esempio - quando si specifica $ control_callback per wp_add_dashboard_widget

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.