Maison  >  Article  >  développement back-end  >  Poupées gigognes infinies, le chemin de dénomination de l'espace de noms

Poupées gigognes infinies, le chemin de dénomination de l'espace de noms

autoload
autoloadoriginal
2021-02-26 17:32:013020parcourir

Après avoir appris namespace, voici un bref résumé des espaces de noms.

1. Objectif de l'utilisation de l'espace de noms

Dans PHP函数, , 常量 Le même le nom n’est pas autorisé. Afin de résoudre le problème du même nom parmi ces trois, des espaces de noms sont apparus, donc l'espace de noms n'affecte que 类、函数、常量(const).

2. Format d'utilisation de l'espace de noms

a Vous pouvez nommer un espace

 <?php
namespace space1;//namespace关键字+空间名 
代码;
 ?>

b. les espaces peuvent être nommés en même temps

<?php
namespace space1;//namespace关键字 +空间名 
代码1;
namespace space2;
代码2;
namespace space3;
代码3;
.......//代码1,代码2,代码3,可相同亦可不同
.......
 ?>

Remarque : S'il s'agit d'un fichier php, la définition du premier espace doit être placée sur la première ligne. Cependant, il y a des exceptions à tout, et le seul code légal avant de déclarer un espace de noms est l'instruction declare utilisée pour définir l'encodage du fichier source. Tout code non PHP, y compris les espaces, ne doit pas apparaître avant une déclaration d'espace de noms. Par exemple, le code suivant signalera une erreur.

<html>
<?php
namespace space1;
namespace space2;
?>
</html>

3. L'accès à l'espace de noms

L'accès à l'espace de noms est divisé en : 非限定空间访问, 限定空间访问, 完全限定空间访问.

a. Accès à l'espace illimité

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
namespace space3\space2;//其中"\"代表space2是space3的子空间,同理space3是space2的父空间。
   function f1(){
     echo "space2";
     }
namespace space3\space2\space1;
   function f1(){
     echo "space1";
     }
   f1();//对上面空间成员进行访问,输出结果为:space1
?>

b. Accès à l'espace restreint

<?php
namespace space2\space1;
    function f1(){
     echo "space1";
      }
namespace space2;
function f1(){
     echo "space2";
      }
   f1();//此时输出的是 space2
   space1\f1();//此时输出的是space1
?>

c . Accès à l'espace entièrement qualifié

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
namespace space2;
      function f1(){
     echo "space2";
     }
namespace space1;
     function f1(){
     echo "space1";
     }
   f1();//对上面空间成员进行访问,输出结果为:space1
   \space3\f1();//对space3进行访问,输出结果为:space3
   \space2\f1();//对space2进行访问,输出结果为:space2
?>

4. Introduction des membres de l'espace

>Alias] : Introduisez l'espace spécifié dans l'espace actuel. Vous pouvez également utiliser le mot-clé as pour donner un alias à l'espace introduit useas  Les membres sont introduits dans l'espace actuel, et les membres de l'espace ne peuvent être introduits que dans les classes

5. Quelques situations mineures use as

Une fois l'espace de noms apparu, l'accès aux éléments de l'espace (classes, constantes, fonctions) est limité à l'espace en cas d'accès à l'espace non qualifié. est utilisé, le système aura la logique d'analyse suivante (les noms qualifiés ou les noms complets sont recherchés directement selon le chemin)

Première recherche dans votre propre espace

  • Deuxièmement, s'ils ne sont pas trouvés, les différents éléments spatiaux sont traités différemment

  • Les constantes système et les fonctions système, si elles ne sont pas trouvées, seront trouvées dans l'espace global

Les classes système ne seront pas automatiquement allez dans l'espace global pour les trouver (une erreur sera signalée, indiquant que l'espace est introuvable)

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
//当前所有访问如果使用非限定名称都代表访问当前空间内的元素
f1();//访问space3下f1()函数
//想要访问函数
define(&#39;PI&#39;,3.14);//space3下没有define()函数,全局函数有
//想要访问系统常量
echo PHP_VERSION; //space3下没有define()函数,全局函数有


//想要访问类

//错误方案
//$m=new Mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;);//系统会提示类不存在

//正确方案
$m= new \Mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;);

?>

Recommandé : tutoriel 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