¿Adjuntar una función privada en un gancho?

2

Tengo una clase con algo privado & funciones publicas La cosa es que no quiero que algunas de las funciones puedan llamarse fuera de la clase, por lo que quiero que sean privadas. Pero necesito engancharlos a ganchos particulares y los ganchos no pueden llamarlos si son privados. ¿Hay alguna solución para eso?

    
pregunta barakuda28 02.10.2012 - 10:09

2 respuestas

4

No, eso es imposible. Cuando WordPress llama a un método, tiene que ser público. Podría escribir un método público que se llame al gancho que llame a un método privado desde adentro.
Aunque no estoy seguro de si eso tiene sentido ...

    
respondido por el fuxia 02.10.2012 - 13:14
1

Aquí hay un ejemplo;

add_action( 'template_redirect', array( 'someClass', 'init' ));

class someClass {

    protected static $content = 'oh yeah, private!';    

    public static function init() {
        $class = __CLASS__;
        new $class;
    }

    private function __construct() {
        add_filter('the_content', array(&$this, 'get_this_function'));
    }

    public static function get_this_function(){
         return self::my_funk_she_on();
    }

    private static function my_funk_she_on(){
        return self::$content;
    }

}

En este ejemplo, estoy filtrando the_content al pasar una función privada que obtiene su valor de una variable privada. Ahora, ya que no se puede llamar a esto directamente, get_this_function es lo que devolverá lo que es privado y eso es lo que paso a mi constructor que agrega el filtro apropiado a template_redirect .

Por cierto, no es necesario utilizar métodos estáticos, algunos lo recomiendan, pero haz lo que quieras.

    
respondido por el userabuser 02.10.2012 - 13:30

Lea otras preguntas en las etiquetas