Pourquoi, où et quand utiliser les pointeurs de référence dans les filtres / crochets?

4

Pourquoi, où et quand utiliser des pointeurs de référence dans les filtres / crochets? Quels sont les inconvénients potentiels de ne pas les utiliser lorsque cela est suggéré ou requis? Nous recherchons simplement une réponse plus détaillée que celle fournie par le codex et peut-être quelques applications réelles de cette solution.

Par exemple: add_filter('some_wp_filter', array(&$this, 'my_function_to_filter');

    
posée hsatterwhite 02.09.2011 - 15:29

1 réponse

6

L'exemple que vous donnez est utilisé lorsque vous construisez un plugin / thème en utilisant une classe.

En utilisation normale, votre fichier functions.php aurait simplement:

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

Si vous utilisez un cours, les choses seront différentes. Vous auriez probablement un fichier my-class.php contenant:

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'));
}

Dans ce cas, &$this passe une référence à la classe afin que le filtre appelé soit la fonction my_function_to_filter de la classe actuelle. Vous pouvez également le faire avec des méthodes statiques si vous souhaitez que tous vos appels de filtres soient conservés au même endroit.

Donc, dans my-class.php vous auriez:

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

Et dans functions.php ou dans votre fichier de plug-in principal, vous avez:

add_filter('some_wp_filter', array('My_Class', 'my_function_to_filter'));
    
réponse donnée EAMann 02.09.2011 - 17:39

Lire d'autres questions sur les étiquettes