Por que, onde e quando usar ponteiros de referência em filtros / ganchos?

4

Por que, onde e quando usar ponteiros de referência em filtros / ganchos? Quais são os possíveis inconvenientes de não usá-los quando sugeridos ou exigidos? Apenas procurando uma resposta mais detalhada do que o códice fornece e talvez algumas aplicações reais disso.

Por exemplo: add_filter('some_wp_filter', array(&$this, 'my_function_to_filter');

    
por hsatterwhite 02.09.2011 / 15:29

1 resposta

6

O exemplo que você dá é usado quando você está construindo um plugin / tema usando uma classe.

No uso normal, seu arquivo functions.php teria apenas:

function my_function_to_filter( $args ) {
    // ... function stuff here
    return $args;
}
add_filter('some_wp_filter', 'my_function_to_filter');

Se você estiver usando uma turma, as coisas parecerão diferentes. Você provavelmente teria um arquivo my-class.php contendo:

class My_Class {
    function my_function_to_filter( $args ) {
        // ... function stuff here
        return $args;
    }
    add_filter('some_wp_filter', array(&$this, 'my_function_to_filter'));
}

Nesse caso, &$this está passando uma referência à classe para que o filtro chamado seja a função my_function_to_filter na classe atual. Você também pode fazer isso com métodos estáticos, se quiser manter todas as suas chamadas de filtro no mesmo lugar.

Então, em my-class.php você teria:

class My_Class {
    static function my_function_to_filter( $args ) {
        // ... function stuff here
        return $args;
    }
}

E em functions.php ou em seu arquivo de plug-in principal, você tem:

add_filter('some_wp_filter', array('My_Class', 'my_function_to_filter'));
    
por EAMann 02.09.2011 / 17:39