## Introduction aux espaces de noms

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Que sont les espaces de noms ? Dans leur définition la plus large, ils représentent un moyen d'encapsuler des éléments. Cela peut être conçu comme un concept abstrait, pour plusieurs raisons. Par exemple, dans un système de fichiers, les dossiers représentent un groupe de fichiers associés et servent d'espace de noms pour les fichiers qu'ils contiennent. Un exemple concret est que le fichier `foo.txt` peut exister dans les deux dossiers `/home/greg` et `/home/other`, mais que les deux copies de `foo.txt` ne peuvent pas co-exister dans le même dossier. De plus, pour accéder au fichier `foo.txt` depuis l'extérieur du dossier `/home/greg`, il faut préciser le nom du dossier en utilisant un séparateur de dossier, tel que `/home/greg/foo.txt`. Le même principe s'applique aux espaces de noms dans le monde de la programmation.

Dans le monde PHP, les espaces de noms sont conçus pour résoudre deux problèmes que rencontrent les auteurs de bibliothèques et d'applications lors de la réutilisation d'éléments tels que des classes ou des bibliothèques de fonctions :

1. Collisions de noms entre le code que vous créez, les classes, fonctions ou constantes internes de PHP, ou celle de bibliothèques tierces.
2. La capacité de faire des alias ou de raccourcir des Noms_Extremement_Long pour aider à la résolution du premier problème, et améliorer la lisibilité du code.

Les espaces de noms PHP fournissent un moyen pour regrouper des classes, interfaces, fonctions ou constantes. Voici un exemple de syntaxe des espaces de noms PHP :

Exemple #1 Exemple de syntaxe des espaces de noms

`<?php
namespace mon\nom; // Voyez la section "Définition des espaces de noms"
class MaClasse {}
function mafonction() {}
const MACONSTANTE = 1;
$a = new MaClasse;
$c = new \mon\nom\MaClasse; // Voyez la section "Espace global"
$a = strlen('bonjour'); // Voyez "Utilisation des espaces de noms : retour
// à l'espace global
$d = namespace\MACONSTANTE; // Voyez "L'opérateur namespace et la constante __NAMESPACE__
$d = __NAMESPACE__ . '\MACONSTANTE';
echo constant($d); // Voyez "Espaces de noms et fonctionnalités dynamiques"
?>`

> Note: Les noms d'espaces de noms ne sont pas sensible à la casse.

> Note:

> Les espaces de noms `PHP`, mais aussi les noms composés commençant par ces noms (comme `PHP\Classes`) sont réservés pour l'utilisation interne du langage, et ne doivent pas être utilisés dans le code de l'espace utilisateur.