Maison  >  Article  >  développement back-end  >  Note 007 Espace de noms PHP - Partie 1

Note 007 Espace de noms PHP - Partie 1

黄舟
黄舟original
2016-12-26 09:41:461117parcourir

Section 1 Présentation de l'espace de noms

Exigences de version

PHP introduit les espaces de noms à partir de la version 5.3.0

Qu'est-ce qu'un espace de noms

Exemple de référence du Manuel officiel PHP :

Le fichier foo.txt peut exister dans les répertoires /home/greg et /home/other en même temps, mais deux fichiers foo.txt ne peuvent pas exister dans le même répertoire. De plus, lors de l'accès au fichier foo.txt en dehors du répertoire /home/greg, nous devons mettre le nom du répertoire et le séparateur de répertoire avant le nom du fichier pour obtenir /home/greg/foo.txt. L'application de ce principe au domaine de la programmation est le concept d'espace de noms.

Le rôle des espaces de noms

En PHP, les espaces de noms sont utilisés pour résoudre deux types de problèmes rencontrés lors de la création de code réutilisable comme des classes ou des fonctions lors de l'écriture de bibliothèques de classes ou d'applications :

Conflits de noms entre le code écrit par l'utilisateur et les classes/fonctions/constantes internes de PHP ou les classes/fonctions/constantes tierces.

Créer un nom alias (ou court) pour un nom d'identifiant très long (généralement défini pour atténuer le premier type de problème), améliorant ainsi la lisibilité du code source.

Exemple de syntaxe d'espace de noms

<?phpnamespace my\name; // 参考 "定义命名空间" 小节
class MyClass {}
function myfunction() {}
const MYCONST = 1;

$a = new MyClass;
$c = new \my\name\MyClass; // 参考 "全局空间" 小节
$a = strlen(&#39;hi&#39;); // 参考 "使用命名空间:后备全局函数/常量" 小节
$d = namespace\MYCONST; // 参考 "namespace操作符和__NAMESPACE__常量” 小节
$d = __NAMESPACE__ . &#39;\MYCONST&#39;;
echo constant($d); // 参考 "命名空间和动态语言特征" 小节?>

Section 2 Définition de l'espace de noms

Définition de l'espace de noms

Bien que tout code PHP légal puisse être inclus dans un espace de noms, seuls les types de code suivants sont affectés par l'espace de noms : classes (y compris les classes et traits abstraits), interfaces, fonctions et constantes.

Un espace de noms est déclaré à l'aide du mot-clé namespace. Si un fichier contient un espace de noms, il doit déclarer l'espace de noms avant tout autre code sauf un : le mot-clé declare.

Le seul code légal avant de déclarer un espace de noms est l'instruction declare qui définit la manière dont le fichier source est codé. De plus, tout code non PHP, y compris les espaces, ne peut pas apparaître avant une déclaration d'espace de noms.

De plus, contrairement aux autres fonctionnalités du langage PHP, le même espace de noms peut être défini dans plusieurs fichiers, ce qui permet de diviser et de stocker le contenu du même espace de noms dans différents fichiers.

Exemple d'espace de noms correct :

<?phpnamespace MyProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
?>

Exemple d'espace de noms incorrect :

<html>
<?php
namespace MyProject; // 致命错误 - 命名空间必须是程序脚本的第一条语句
?>

Définissez un sous-espace de noms

avec un répertoire et un peu comme les relations entre fichiers, Les espaces de noms PHP vous permettent également de spécifier des noms d'espaces de noms hiérarchiques. Par conséquent, les noms d’espaces de noms peuvent être définis de manière hiérarchique.

L'exemple suivant crée la constante MyProjectSubLevelCONNECT_OK, la classe MyProjectSubLevelConnection et la fonction MyProjectSubLevelconnect.

<?php
namespace MyProject\Sub\Level;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
?>

Définissez plusieurs espaces de noms dans le même fichier

Vous pouvez également définir plusieurs espaces de noms dans le même fichier. Il existe deux syntaxes pour définir plusieurs espaces de noms dans le même fichier.

La syntaxe recommandée est d'utiliser des accolades pour définir l'espace de noms.

<?php
namespace MyProject {    
const CONNECT_OK = 1;    
class Connection { /* ... */ }    
function connect() { /* ... */  }
}
namespace AnotherProject {    
const CONNECT_OK = 1;    
class Connection { /* ... */ }    
function connect() { /* ... */  }
}?>

Dans la pratique réelle de la programmation, il est fortement déconseillé de définir plusieurs espaces de noms dans le même fichier. Cette méthode est principalement utilisée pour combiner plusieurs scripts PHP dans le même fichier.

À l'exception de l'instruction de déclaration d'ouverture, il ne doit y avoir aucun code PHP en dehors des crochets de l'espace de noms.

Ce qui précède est le contenu de l'espace de noms PHP Note 007 - la première partie. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


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