Maison >développement back-end >Problème PHP >Utilisation de l'espace de noms php
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.
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 //创建一个名为'Article'的命名空间 namespace Article; ?>
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; ?>
Exemple 2
</html> <?php namespace Article; ?>
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 //创建一个名为'Article'的命名空间 namespace Article; //此Comment属于Article空间的元素 class Comment { } //创建一个名为'MessageBoard'的命名空间 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 Namespace :
<?php namespace Article; class Comment { } namespace MessageBoard; class Comment { } //调用当前空间(MessageBoard)的Comment类 $comment = new Comment(); //调用Article空间的Comment类 $article_comment = new \Article\Comment(); ?>
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 = '/article'; function getCommentTotal() { return 100; } class Comment { } namespace MessageBoard; const PATH = '/message_board'; 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(); ?>
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!