Je suis novice en PHP et WordPress, alors soyez gentil!
Je construis un plugin - en suivant quelques tutoriels, pour que tout fonctionne.
Ma question est pourquoi la fonction que je veux appeler est-elle enveloppée dans le array($this, function)
? Par exemple, j'ai ce code constructeur dans ma classe
function __construct() {
add_action( 'admin_init',array( $this, 'getStuffDone' ) );
}
La fonction getStuffDone est déclenchée correctement - mais pourquoi doit-elle être dans le format dans lequel elle se trouve?
Tout aperçu est très apprécié.
add_action
avec la classe et PHP Passage aux fonctionsRéponses:
C'est un rappel PHP . Vous avez besoin de la syntaxe pour conserver une référence à l'instance de classe.
Autrement dit - si vous ne l'avez pas fait
$this
, comment l'appelant sait-il quegetStuffDone
c'est une méthode de votre classe, et pas seulement une fonction PHP régulière? Ce n'est pas le cas.Utiliser
array( $this, 'getStuffDone' )
dit à PHP:la source
except language constructs such as: array()
, mais ici nous passons un tableau. Est-ce une faute de frappe ou ai-je mal lu la phrase?la définition de la fonction add_action () ressemble à:
donc selon ça on dirait qu'il attend (string, string, int, int)
Dans un fichier php traditionnel, le deuxième paramètre serait simplement l'un de vos noms de fonction.
vous auriez donc
add_action('admin_init','my_init_function')
Il semble que vous utilisiez une classe pour encapsuler votre plugin. D'autres classes pourraient avoir des fonctions avec le même nom ( getStuffDone ).
Donc, votre fonction n'est connue que par référence à votre classe, c'est pourquoi vous devez spécifier votre classe
$this
ainsi que le nom de la fonction.Si vous essayez de référencer une fonction à l'intérieur d'une classe, vous devez utiliser la syntaxe appelable tableau
Voir aussi codex.wordpress.org
la source
Voir la documentation, sous les " Notes contributives des utilisateurs ":
la source