Usar un método privado como una devolución de llamada de acción desde dentro de una clase

3

He creado una clase desde la cual me gustaría llamar a un método privado (desde la misma clase) desde el método __construct como una devolución de llamada de acción.

Cuando me gustaría usar un método público, puedo acceder a él mediante:

add_action( 'init', array( $this, 'action_callback' ) );

Sin embargo, esto provoca un error cuando el método es privado. También he intentado sin éxito:

add_action('init', $this->action_callback() );

¿Cómo accedo a un método privado?

La clase se ve algo como:

class My_class {
    public function __construct() {
        add_action( 'init', array( $this, 'action_callback' ) );
    }

    private function action_callback() {
        // do something
    }
}
    
pregunta tommyf 26.06.2014 - 07:15

1 respuesta

9

No es posible llamar a un método privado a través de una acción o filtro. Al llamar a add_action o add_filter , WordPress agrega la devolución de llamada a una lista de devoluciones de llamada para esa acción o filtro específico. Luego, cuando se llama a do_action o apply_filters , WordPress usa call_user_func_array para llamar a las funciones y métodos vinculados. Como no se llama a call_user_func_array desde la clase, no puede llamar a métodos privados de esa clase.

Además, no hay una forma adecuada de mantener realmente el método privado, aunque podría agregar un método (público) separado a su clase, agregarlo como una devolución de llamada a la acción y hacer que llame al método privado. Sin embargo, al hacerlo, pierdes el concepto real de que el método es privado.

    
respondido por el engelen 26.06.2014 - 08:34

Lea otras preguntas en las etiquetas