yumecosmos
Solo me estoy mojando los pies en WordPress y estoy tratando de escribir un complemento muy simple usando técnicas de programación orientada a objetos. He estado siguiendo este tutorial: http://www.yaconiello.com/blog/como-escribir-wordpress-plugin/ . Hasta ahora siento que entiendo la mayor parte de lo que está pasando, pero estoy un poco desconcertado por afirmaciones como esta:
add_action('init', array(&$this, 'init'));
Habiendo leído la documentación sobre Add_action() de WordPress y Llamables de PHP, deduzco que el segundo argumento es un método de una instancia de clase. Pero no entiendo porque $this
tiene que ser pasado por referencia.
Encontré esta nota en los documentos de PHP sobre llamadas que sospecho que pueden tener algo que ver con eso, pero todavía me cuesta entender cuál es la diferencia:
Nota: en PHP 4, era necesario usar una referencia para crear una devolución de llamada que apuntara al objeto real, y no a una copia del mismo. Para obtener más detalles, consulte Referencias explicadas.
Si tengo PHP 5, ¿estoy seguro simplemente usando array($this,'init')
?
Posiblemente relacionado: add_action en wordpress usando OOP?
Sí, es seguro usar solo array($this, 'init');
.
Lo que esto es en realidad es un “invocable” en PHP. Se invocará usando call_user_func()
o call_user_func_array()
(internamente dentro del add_action
método).
Descripción oficial de PHP de este tipo de llamada:
Un método de un objeto instanciado se pasa como una matriz que contiene un objeto en el índice 0 y el nombre del método en el índice 1.
Puedes leer más sobre los callables aquí.
-
¡OK gracias! Entiendo que es un invocable. En realidad, me vinculé a esa página en mi pregunta;) Aunque me referí a ella como una devolución de llamada… supongo que será mejor que vaya a editar. Solo tenía una curiosidad académica sobre la diferencia entre $this y &$this en este contexto. Wow, esa fue una oración confusa.
– Yumecosmos
14 de febrero de 2014 a las 14:10