web-dev-qa-db-fra.com

Eviter la collision de noms de classes lors de l’utilisation de bibliothèques tierces dans des plugins?

Je développe actuellement un plugin Wordpress traitant des comportements très spécifiques sur notre nouveau site Web Wordpress. J'ai commencé par lire les articles d'introduction du Codex et j'ai également trouvé le plugin Wordpress . Il est dit que

pour éviter les collisions de fonction et variables, nous devrions inclure nos fonctions dans une classe, qui devrait être nommée d'après notre plugin.

Le passe-partout semble déjà gérer cela, bien!

Cependant, je compte également utiliser des bibliothèques tierces pour mon plug-in (Swiftmailer, Mixpanel, etc.), qui seront placées dans '/ wp-content/plugins/myplugin/includes'.

Ma question est la suivante: que se passe-t-il si un autre plug-in utilise également l'une de ces bibliothèques dans son code? Swiftmailer est une bibliothèque assez commune, donc une autre bibliothèque pourrait la charger une fois initialisée. Il y aura une collision (une classe ne peut pas être redéfinie en PHP). Existe-t-il un mécanisme dans Wordpress pour gérer cela? Ou quelqu'un a-t-il déjà une solution à ce type de problème?

1
MaxiWheat

Je devais le faire auparavant, et ce que je trouve le plus facile pour moi est quelque chose comme ceci:

    function check_for_library() {
        return class_exists( 'Class_Of_Library_In_Question' );
    }

Ensuite, il vous suffit de renseigner les informations correctes et d’appeler cette fonction.

    if( ! check_for_library() ) {
        include_once( 'library_file.php' );
    }
1
Nick Young