Maison > développement back-end > Problème PHP > Utilisation de l'espace de noms php

Utilisation de l'espace de noms php

王林
Libérer: 2023-03-06 07:28:02
original
1594 Les gens l'ont consulté

Utilisation de l'espace de noms php : [namespace Article;] signifie créer un espace de noms nommé Article. Il convient de noter qu'il ne peut y avoir de code devant le premier espace de noms du fichier de script actuel.

Utilisation de l'espace de noms php

L'un des objectifs les plus clairs des espaces de noms est de résoudre le problème des noms en double. En PHP, deux fonctions ou classes ne sont pas autorisées à avoir le même nom, sinon une erreur fatale. Dans ce cas, le problème peut être résolu à condition d'éviter la duplication de nom. La méthode la plus courante consiste à se mettre d'accord sur un préfixe.

(Tutoriel recommandé : Tutoriel vidéo php )

L'espace de noms divise le code en différents espaces (zones) et les constantes, fonctions et classes de chaque espace (pour Pour être paresseux, je les appellerai ci-dessous éléments) dont les noms ne s'influencent pas les uns les autres. Cela ressemble un peu au concept d'« encapsulation » que l'on évoque souvent.

Pour créer un espace de noms, vous devez utiliser le mot-clé namespace, comme ceci :

<?php
//创建一个名为&#39;Article&#39;的命名空间
namespace Article;
?>
Copier après la connexion

Il est à noter qu'il ne peut y avoir de code devant le premier espace de noms du fichier de script actuel . Les méthodes d'écriture suivantes sont incorrectes :

Exemple 1

//在脚本前面写了一些逻辑代码
<?php
$path = "/";
class Comment { }
namespace Article;
?>
Copier après la connexion

Exemple 2

</html>
<?php
namespace Article;
?>
Copier après la connexion

Pourquoi voulez-vous dire le premier espace de noms ? Parce que plusieurs espaces de noms peuvent être créés dans le même fichier de script.

J'ai créé deux espaces de noms ci-dessous et ajouté un élément de classe Comment à chacun de ces deux espaces :

<?php
//创建一个名为&#39;Article&#39;的命名空间
namespace Article;
//此Comment属于Article空间的元素
class Comment {
}
//创建一个名为&#39;MessageBoard&#39;的命名空间
namespace MessageBoard;
//此Comment属于MessageBoard空间的元素
class Comment {
}
?>
Copier après la connexion

Vous ne pouvez pas appeler directement d'autres éléments entre différents espaces, vous devez utiliser la syntaxe Namespace :

<?php
namespace Article;
class Comment {
}
namespace MessageBoard;
class Comment {
}
//调用当前空间(MessageBoard)的Comment类
$comment = new Comment();
//调用Article空间的Comment类
$article_comment = new \Article\Comment();
?>
Copier après la connexion

Vous pouvez voir que lors de l'appel de la classe Comment dans l'espace article de l'espace MessageBoard, une syntaxe de type chemin de fichier est utilisée : Nom de l'élément nom de l'espace

Sauf En dehors des classes, l'utilisation Les fonctions et les constantes sont les mêmes. Ci-dessous, je crée de nouveaux éléments pour les deux espaces et affiche leurs valeurs dans l'espace MessageBoard.

<?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();
?>
Copier après la connexion

Ensuite, j'ai obtenu les données des éléments de l'espace Article.

Recommandations associées : formation php

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal