Maison  >  Article  >  développement back-end  >  principe de l'espace de noms php

principe de l'espace de noms php

王林
王林original
2019-09-06 16:35:093441parcourir

principe de l'espace de noms php

1. Qu'est-ce qu'un espace de noms et comment définir un espace de noms
Généralement, il n'y a pas de différences dans un fichier de code source d'un programme PHP ou dans la même requête. . Il est permis d'avoir plus de deux noms de classe, noms de constantes ou noms de fonctions portant le même nom. Dans ce cas, le programme signalera une erreur lors de son exécution. Cependant, dans de nombreuses situations pratiques, nous ne pouvons éviter d'avoir plus de deux noms de classe, noms de constantes ou noms de fonctions portant le même nom dans le même fichier. Dans ce cas, un espace de noms doit être introduit.

Exemple :

<?php
function getUser () 
{
  return $username1;
}
  function getUser () 
  {
  return $username2;
  }

Un programme comme celui-ci signalera une erreur lors de son exécution. Nous introduisons donc l'espace de noms, comme suit :

<?php
namespace get1function getUser () 
{
  return $username1;
}
namespace get2
function getUser () 
{
  return $username2;
}

Comment comprendre la signification de l'espace de noms ? En prenant le code ci-dessus comme exemple, nous imaginons ce fichier PHP comme un dossier, et les deux fonctions qu'il contient comme deux fichiers, mais deux fichiers du même nom ne sont pas autorisés dans le même dossier, nous devons donc les diviser en deux dossiers. avec des noms différents. C'est ainsi que fonctionnent les espaces de noms.

Remarque spéciale :
L'espace de noms n'est valable que pour les noms de classe, les noms de fonctions et les constantes (définies par const).
L'espace de noms avant d'un fichier ne peut être précédé d'aucun caractère valide

2. Comment utiliser l'espace de noms ?
Par exemple, comment utiliser getUser() sous get2 défini ci-dessus ?
1) Lors de l'accès à une fonction (ou constante, nom de classe), si l'espace de noms n'est pas précisé, le principe de proximité est utilisé (accès sous l'espace de noms courant).
2) Alors, comment accéder au contenu sous l'espace de noms spécifié ? Comme suit :

\get1\getUser(); // 访问get1下的getUser()方法

3. Espace de noms multi-niveaux et trois méthodes d'accès
1) Espace de noms multi-niveaux :
Imaginez si un fichier de projet PHP est un fichier Dossiers, et il y aura des sous-dossiers de premier niveau sous un dossier, et il y aura des sous-dossiers (sous-dossiers secondaires) sous les sous-dossiers de premier niveau. La même chose est vraie pour les espaces de noms. Sous un espace de noms, il peut y avoir des espaces de noms, qui sont ce qu'on appelle. espaces de noms à plusieurs niveaux. Par exemple, dans thinkPHP :

namespace app\Index\Controller;

Il s'agit d'un espace de noms à plusieurs niveaux. La méthode d'accès est la même que dans l'espace de noms général.

2) Trois méthodes d'accès à l'espace de noms (similaires aux chemins relatifs et aux chemins absolus)
A. Méthode d'accès au nom non qualifié
B. Méthode d'accès au nom qualifié
C.

<?php
namespace app\get1
function getUser () 
{
  return $username1;
  }
  namespace get2
  function getUser () {
  return $username2;
  }
  getUser(); // 非限定名称访问方式
  \app\get1\getUser(); //完全限定名称访问方式,从根路径开始,类似绝对路径
  app\get1\getUser(); //限定名称访问方式,不是从根路径开始,类似相对路径

4. Mécanisme d'introduction de l'espace de noms
1) Introduction de l'espace : utilisation de mots clés, remarque : après vous être déplacé dans l'espace, vous devez utiliser la méthode d'accès au nom qualifié Lors de l'accès aux fonctions (ou classes, constantes) dans l'espace importé, vous ne pouvez pas utiliser de noms non qualifiés pour accéder aux fonctions (ou classes, constantes) dans l'espace de noms actuel.
2) Introduction des éléments spatiaux : utilisation de mots clés. REMARQUE : Seules les classes peuvent être introduites puis accessibles en utilisant des noms non qualifiés.

Pour plus de contenu connexe, veuillez visiter le site Web PHP chinois : Tutoriel vidéo 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!

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
Article précédent:Qu'est-ce qu'un tableau en PHPArticle suivant:Qu'est-ce qu'un tableau en PHP