Soy un novato en PHP y WordPress, ¡así que sé gentil!
Estoy construyendo un complemento, siguiendo algunos tutoriales y haciendo que todo funcione.
Mi pregunta es ¿por qué la función a la que quiero llamar está envuelta en array($this, function)
? Por ejemplo, tengo este código de constructor dentro de mi clase
function __construct() {
add_action( 'admin_init',array( $this, 'getStuffDone' ) );
}
La función getStuffDone se activa OK, pero ¿por qué tiene que estar en el formato en que está?
Cualquier idea es muy apreciada.
add_action
con la clase y PHP Pasando a funcionesRespuestas:
Es una devolución de llamada PHP . Necesita la sintaxis para mantener una referencia a la instancia de clase.
Dicho de esta manera: si no lo hizo
$this
, ¿cómo sabe la persona que llama quegetStuffDone
es un método de su clase y no solo una función PHP normal? No lo hace.Usando
array( $this, 'getStuffDone' )
dice a PHP:fuente
except language constructs such as: array()
, pero aquí estamos pasando una matriz. ¿Es esto un error tipográfico o estoy leyendo mal la oración?la definición de la función add_action () se ve así:
de acuerdo con eso parece que espera (string, string, int, int)
En un archivo php tradicional, el segundo parámetro sería simplemente uno de los nombres de sus funciones.
entonces tendrías
add_action('admin_init','my_init_function')
Parece que estás usando una clase para encapsular tu complemento. Otras clases podrían tener funciones en ellas con el mismo nombre ( getStuffDone ).
Entonces, su función solo se conoce con referencia a su clase, es por eso que debe especificar su clase
$this
y el nombre de la función.Si intenta hacer referencia a una función dentro de una clase, debe usar la sintaxis invocable de matriz
Ver también codex.wordpress.org
fuente
Consulte la documentación, en " Notas contribuidas por el usuario ":
fuente