Introduction aux espaces de noms

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, � diff�rents endroits. Par exemple, dans un syst�me de fichiers, les dossiers repr�sentent un groupe de fichiers associ�s, et sert d'espace de noms pour les fichiers qu'il contient. 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 applique les espaces de noms au monde de la programmation.

Dans le monde PHP, les espaces de noms sont con�us pour r�soudre deux probl�mes que les auteurs de biblioth�ques et applications rencontrent 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, 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"
?>

Les espaces de noms sont disponibles en PHP depuis PHP 5.3.0.