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


16

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 comme rappel en passant le tableau array("foo","bar")comme nom de 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 j'ai besoin d'enregistrer une action dans la classe elle-même, cela fonctionnerait-il array($this,'bar')?


3
Un test ne serait-il pas plus rapide que de poser la question? ;) Oui, vous pouvez le faire.
fuxia

2
Un test peut aider, mais parfois vous recherchez également des commentaires. Je pense que c'est correct de poser la question, et il y a cette règle, qui remet en question la motivation des PO ... :)
hakre

Réponses:


11

Si j'ai besoin d'enregistrer une action dans la classe elle-même, cela fonctionnerait-il array($this, 'bar')?

Oui cela fonctionne. $thisDocs fait référence à l'instance concrète requise pour le rappel . C'est exactement comme l' $fooexemple que vous donnez. C'est juste que $thisc'est un peu plus spécial, mais cela représente fondamentalement la même chose et cela fonctionne parfaitement avec les rappels en PHP.

Additionnel:

si j'ai une classe foo et une barre de méthode statique, je peux l'enregistrer comme rappel en passant le tableau array("foo","bar")comme nom de 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 Documents de rappel . Ça pourrait être pratique.


1

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

['foo','bar'] 

lorsque ce qui suit donne une constante de classe non définie «bar» :

foo::bar

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.