Usando um método privado como retorno de ação de dentro de uma classe

3

Eu criei uma classe de dentro da qual eu gostaria de chamar um método privado (de dentro da mesma classe) do método __construct como um callback de ação.

Quando eu gostaria de usar um método público, posso acessá-lo por:

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

No entanto, isso causa um erro quando o método é privado. Eu também tentei sem sucesso:

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

Como eu acesso um método privado?

A turma parece com algo como:

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

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

1 resposta

9

Não é possível chamar um método privado por meio de uma ação ou filtro. Ao chamar add_action ou add_filter , o WordPress adiciona o retorno de chamada a uma lista de retornos de chamada para essa ação ou filtro específico. Então, quando do_action ou apply_filters é chamado, o WordPress usa call_user_func_array para chamar as funções e métodos vinculados. Como call_user_func_array não é chamado de dentro da classe, ele não pode chamar métodos privados dessa classe.

Além disso, não há um modo adequado de manter o método privado, mesmo que você possa adicionar um método (público) separado à sua classe, adicionar isso como um retorno de chamada à ação e chamar esse método privado. Ao fazer isso, no entanto, você perde o conceito real do método ser privado.

    
por engelen 26.06.2014 / 08:34