Maison  >  Article  >  développement back-end  >  Explication détaillée du rôle de l'espace de noms php

Explication détaillée du rôle de l'espace de noms php

伊谢尔伦
伊谢尔伦original
2017-05-22 11:18:154093parcourir

L'une des fonctions les plus claires de l'espace de noms PHP est de résoudre le problème des noms en double. Deux fonctions ou classes ne sont pas autorisées à avoir le même nom en PHP, sinon une erreur fatale se produira. Le chapitre précédent a présenté ce qu'est l'espace de noms PHP . Le site officiel de PHP l'a clairement défini et expliqué visuellement. Voici un paragraphe copié directement du site officiel de PHP : Au sens large, l'espace de noms est une méthode d'encapsulation des choses. Ce concept abstrait se retrouve à de nombreux endroits. Par exemple, les répertoires sont utilisés dans les systèmes d'exploitation pour regrouper les fichiers associés et agissent comme des espaces de noms pour les fichiers du répertoire. Par exemple, le fichier foo.txt peut exister dans les répertoires /home/greg et /home/other en même temps, mais deux fichiers foo.txt ne peuvent pas exister dans le même répertoire. De plus, lors de l'accès au fichier foo.txt en dehors du répertoire /home/greg, nous devons mettre le nom du répertoire et le séparateur de répertoire avant le nom du fichier pour obtenir /home/greg/foo.txt. L'application de ce principe au domaine de la programmation est le concept d'espace de noms.

L'introduction du mot-clé d'espace de noms dans l'espace de noms PHP vise à résoudre divers « problèmes » survenus dans le processus de programmation orientée objet PHP. Les problèmes spécifiques sont les suivants :

  1. Conflits de noms entre le code écrit par l'utilisateur et les classes/fonctions/constantes internes de PHP ou les classes/fonctions/constantes tierces.

  2. Afin d'atténuer le problème 1, lors de l'écriture de diverses classes, des noms de classe plus longs sont généralement utilisés ou des préfixes (ou suffixes) de nom sont ajoutés aux classes qui implémentent différentes fonctions.

  3. Lorsque la fonction magique __autoload n'est pas utilisée et que chaque classe occupe un fichier php exclusif, afin d'appeler différentes classes, d'autres fichiers php utilisant ces classes seront utilisés. Écrivez plus d'inclusion. (ou require ou require_once) au début.

Nous créons d'abord un espace de noms. Plusieurs espaces de noms peuvent être créés dans le même fichier de script.

Le code est le suivant :

<?php
//创建一个名为&#39;Article&#39;的命名空间
namespace Article;
//此Comment属于Article空间的元素
class Comment { }
//创建一个名为&#39;MessageBoard&#39;的命名空间
namespace MessageBoard;
//此Comment属于MessageBoard空间的元素
class Comment { }
?>
Vous ne pouvez pas appeler directement d'autres éléments entre différents espaces, vous devez utiliser la syntaxe de l'espace de noms.

L'exemple de code est le suivant :

<?php
namespace Article;
class Comment { }
namespace MessageBoard;
class Comment { }
//调用当前空间(MessageBoard)的Comment类
$comment = new Comment();
//调用Article空间的Comment类
$article_comment = new \Article\Comment();
?>
Comme vous pouvez le voir, lors de l'appel de la classe Comment dans l'espace article dans l'espace MessageBoard, une syntaxe comme un chemin de fichier est utilisée :

Nom de l'élément de nom d'espace

À l'exception des classes, l'utilisation des fonctions et des constantes est la même. Ci-dessous, j'ai créé de nouveaux éléments pour les deux espaces et les ai affichés dans la valeur de l'espace MessageBoard.

Le code est le suivant :

<?php
namespace Article;
const PATH = &#39;/article&#39;;
function getCommentTotal() {
 return 100;
}
class Comment { }
namespace MessageBoard;
const PATH = &#39;/message_board&#39;;
function getCommentTotal() {
 return 300;
}
class Comment { }
//调用当前空间的常量、函数和类
echo PATH; //message_board
echo getCommentTotal(); //300
$comment = new Comment();
//调用Article空间的常量、函数和类
echo \Article\PATH; //article
echo \Article\getCommentTotal(); //100
$article_comment = new \Article\Comment();
?>
Les résultats suivants sont obtenus :

/message_board300/article100


【Tutoriels recommandés】

1. "

php.cn Dugu Jiujian (4) - Tutoriel vidéo PHP"

2. >Espace de noms : Bien que nous ayons le même nom et le même sexe, nous appartenons à des temps et des espaces différents


3

Un ensemble complet de tutoriels sur la programmation PHP de l'entrée au master.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn