(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 :
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 (commePHP\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.