web-dev-qa-db-fra.com

Enregistrement de méthodes de classe en tant que rappels de hook

Je ne sais pas si je l'ai fait correctement.

Si je comprends bien:

si j'ai une classe foo et une barre de méthode statique, je peux l'enregistrer en tant que rappel en passant le tableau array("foo","bar") en tant que nom de la fonction.

Si j'ai une instance d'une classe dans $ foo et que je veux appeler la barre de méthode, je passe le tableau array($foo,'bar').

Si je dois enregistrer une action dans la classe elle-même, cela fonctionnerait-il avec array($this,'bar')?

14
Daniel Chatfield

Si je dois enregistrer une action dans la classe elle-même, cela fonctionnerait-il avec array($this, 'bar')?

Oui cela fonctionne. $thisDocs  fait référence à l'instance concrète nécessaire pour le callback . C'est exactement comme l'exemple $foo que vous donnez. C'est juste que $this est un peu plus spécial, mais il représente fondamentalement la même chose et fonctionne parfaitement avec les callbacks en PHP.

Supplémentaire:

si j'ai une classe foo et une barre de méthode statique, je peux l'enregistrer en tant que rappel en passant le tableau array("foo","bar") en tant que nom de la fonction.

Oui, vous pouvez le faire pour la fonction statique, vous pouvez également l'écrire sous forme de chaîne au lieu du tableau: foo::bar, voir Callbacks Docs  . Ça pourrait être pratique.

9
hakre

Pour les méthodes statiques, vous pouvez aussi faire ceci:

['foo','bar'] 

lorsque ce qui suit donne La constante de classe non définie 'bar' :

foo::bar

exemple - lors de la spécification de $ control_callback pour wp_add_dashboard_widget

1
William Turrell