Maison >développement back-end >tutoriel php >Poupées gigognes infinies, le chemin de dénomination de l'espace de noms
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 use
as
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('PI',3.14);//space3下没有define()函数,全局函数有 //想要访问系统常量 echo PHP_VERSION; //space3下没有define()函数,全局函数有 //想要访问类 //错误方案 //$m=new Mysqli('localhost','root','root');//系统会提示类不存在 //正确方案 $m= new \Mysqli('localhost','root','root'); ?>
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!