Devtips – espaces de noms en PHP
Nom. Mais cela conduit à un code inutilement plus complexe: les noms sont plus longs parce que le préfixe n’a pas d’autre but que d’imiter l’espace de noms.
Espace de noms PHP la version 5.3 de PHP introduit le concept d’espace de noms. Les définitions qu’ils donnent dans le document semblent bonnes, donc je suggère ici: dans une définition plus large, les espaces de noms sont une façon d’encapsuler les éléments. Dans de nombreux endroits, cela peut être considéré comme un concept abstrait. Par exemple, dans n’importe quel système d’exploitation, un répertoire est utilisé pour grouper les fichiers connexes et pour les utiliser comme espace de noms pour leurs fichiers. Par exemple, le fichier Foo. Txt peut exister à la fois dans les répertoires \/ home \/ Greg et \/ home \/ other, mais il y a deux copies Foo. Txt ne peut pas coexister dans le même répertoire.
Dans le monde PHP, les espaces de noms sont conçus pour résoudre deux problèmes rencontrés par les bibliothèques et les auteurs d’applications lors de la création d’éléments de code réutilisables tels que des classes ou des fonctions: 1. Le nom de conflit entre le Code créé et le Code PHP interne ou le Code tiers. 2. La possibilité d’alias (ou d’abréviations) extra _ Long name améliore la lisibilité du code source. Documents PHP comment créer des espaces de noms il est facile de créer des espaces de noms en PHP. Au début du fichier PHP que vous créez, ajoutez une directive d’espace de noms avec le nom que vous voulez utiliser, et tout ce que vous définissez dans le fichier appartient à cet espace de noms:
<?php namespace Nelio_Content; Sì, è così semplice! Ora "tutto" che creiamo sarà nello spazio dei nomi Nelio_Content . Ad esempio, se definisco una funzione come quella che ho citato all'inizio: <?php namespace Nelio_Content; function get_site_id() { // … } ora sappiamo che get_site_id è all'interno dello spazio dei nomi Nelio_Content . In questo modo, non dobbiamo più utilizzare il prefisso nelio_content_ quando si definisce la funzione. Grande! Eccezioni agli spazi dei nomi Se osservi da vicino ciò che ti ho detto finora, vedrai che ho scritto "tutto" tra virgolette: "'tutto ciò che aggiungiamo lì apparterrà allo spazio dei nomi specificato". Perché l'ho fatto? Poiché gli spazi dei nomi non si applicano assolutamente a tutto il codice che scriviamo… ci sono alcune eccezioni.
Gli spazi dei nomi PHP coprono solo i seguenti elementi PHP: En outre, il y a d’autres choses dans WordPress qui ont besoin de leur propre espace de noms. Malheureusement, l’espace de noms PHP ne couvre pas: les poignées de script, les options de base de données ou les types de contenu personnalisés et les métadonnées associées, etc. Dans tous ces cas, le préfixe doit continuer à être utilisé. Si nécessaire
Élément, aucune action spéciale n’est nécessaire: il suffit d’appeler par son nom. Par exemple, dans le fragment de code suivant:
<? Contenu de l'espace de noms PHP nelio _ content; Fonction get _ Site Id () {\/…} Fonction get _ Auth token () {$site id = get Site Id (); \/…} Comme vous pouvez le voir, nous avons défini deux fonctions: get _ Site Id et get Auth token, toutes deux situées dans l'espace de noms de contenu nelio content. Lorsque le jeton get _ Auth doit utiliser l'ID get site il suffit de l'appeler comme d'habitude. Si vous devez utiliser get _ Site Id dans un autre espace de noms, vous devez appeler la fonction avec son identificateur complet: <? Espace de noms PHP something _ else; Fonction do _ some action () {$site id = nelio content get Site Id (); \/…} Ou vous devez importer une fonction avec le mot – clé utilisé:
<? Espace de noms PHP something _ else; Utiliser nelio _ content get Site Id; Fonction do _ some action () {$site id = get Site Id (); \/…} Personnellement, j'aime beaucoup la deuxième option: importer des fonctions à partir d'autres espaces de noms en utilisant le mot – clé use, vous pouvez rapidement voir les en – têtes de fichiers et déterminer les dépendances. Fonctionnement des filtres WordPress et des espaces de noms PHP vous devez garder à l’esprit un détail important lors de l’utilisation des filtres WordPress et des espaces de noms à côté des opérations. Lorsque vous spécifiez des filtres et des callbacks d'action, les callbacks sont généralement nommés chaînes:
<? Php \/ \/… Ajouter _ action ('init', 'do some action'); Le problème est que si cette fonction est dans l'espace de noms, le crochet précédent ne fonctionnera pas comme prévu; Vous devez donner le nom complet de la fonction WordPress. En d'autres termes, vous devez inclure son espace de noms, s'il y en a un. Voulez – vous ajouter un crochet au fichier qui définit l'espace de noms lui – même? Peu importe, veuillez utiliser le nom complet: <? Contenu de l'espace de noms PHP nelio _ content; Fonction do _ some action () {\/…} Ajouter _ action ('init', 'nelio content do some action');
Êtes – vous dans un autre espace de noms, mais avez – vous importé la fonction en utilisant? Peu importe, veuillez utiliser le nom complet:
<? Espace de noms PHP something _ else; Utilisez le contenu de nelio _ pour effectuer quelques actions; \/ \/… Ajouter _ action ('init', 'nelio content do some action'); Une autre caractéristique intéressante de l'utilisation des espaces de noms d'alias dans les espaces de noms est les alias. Imaginez le scénario suivant: <? Contenu de l'espace de noms PHP nelio _ content; Fonction get _ Site Id () {\/…} Si je veux utiliser cette fonction dans un autre espace de noms, nous avons vu que je peux l'utiliser pour le faire. Cependant, si le module dans lequel je veux utiliser cette fonction a déjà une fonction appelée get _ Site Id, comment puis – je l'utiliser? Heureusement, nous pouvons avoir notre alias d'importation sous un nouveau nom: <? Espace de noms PHP something _ else; Utiliser nelio _ content get Site Id comme get NC Site Id (); Fonction get _ Site Id () {\/…} Fonction do _ some action () {$NC site Idd = get NC Site Id (); \/…} Commencez à utiliser l'espace de noms maintenant! Les espaces de noms sont un excellent outil pour éviter les conflits de noms et organiser le Code. En fait, bien que je n'ai pas commenté cet article, il existe des normes comme PSR – 4 qui permettent à PHP de charger automatiquement des classes en fonction de la structure de l'espace de noms que vous utilisez et de la façon dont le Code est organisé dans les répertoires et les fichiers. Si vous n'avez pas déjà utilisé d'espaces de noms dans votre projet, nous vous recommandons de les utiliser à partir de maintenant. Veuillez nous faire part de votre expérience dans vos commentaires! Images caractéristiques de chaitanya TV sur unsplash.