(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Avant de discuter de l'utilisation des espaces de noms, il est important de comprendre comment PHP devine quel espace de noms votre code utilise. Une analogie simple peut être faite entre les espaces de noms de PHP et un système de fichiers. Il y a trois moyens d'accéder à un fichier dans un système de fichiers :
foo.txt. Cela est résolu
      en dossiercourant/foo.txt où dossiercourant est le 
      dossier de travail. Si le dossier courant est /home/foo, 
      ce nom se résout en /home/foo/foo.txt.
     
    sous-dossier/foo.txt. Cela se 
      résout en dossiercourant/sous-dossier/foo.txt.
     
    /main/foo.txt. Cela se résout
      en /main/foo.txt.
     
    $a = new foo(); ou
      foo::methodestatique();.  Si l'espace de noms courant
      est espacedenomscourant, ceci se résout en 
      espacedenomscourant\foo.  Si l'espace de noms est 
      global, soit encore l'espace de noms sans nom, cela devient foo.
     
     
      Une mise en garde : les noms sans qualificatif pour les fonctions et les
      constantes vont être pris dans l'espace de noms global, si la fonction
      n'est pas définie dans l'espace de noms courant. Voyez 
      Utilisation des espaces de noms :
      retour à l'espace de noms global pour les fonctions et les constantes pour
      plus de détails.
     
    $a = new sousespacedenoms\foo(); ou
      sousespacedenoms\foo::methodestatique();. Si l'espace de noms courant
      est espacedenomscourant, cela devient 
      espacedenomscourant\sousespacedenoms\foo. Si
      le code est global, c'est à dire l'espace de noms sans nom, 
      cela devient sousespacedenoms\foo.
     
    $a = new \espacedenomscourant\foo(); ou
      \espacedenomscourant\foo::methodestatique();. Cela fait toujours
      référence au nom littéral spécifié dans le code : espacedenomscourant\foo.
     
    Voici un exemple des trois syntaxes, dans du code réel :
file1.php
<?php
namespace Foo\Bar\sousespacedenoms;
const FOO = 1;
function foo() {}
class foo
{
    static function methodestatique() {}
}
?>
file2.php
<?php
namespace Foo\Bar;
include 'file1.php';
const FOO = 2;
function foo() {}
class foo
{
    static function methodestatique() {}
}
/* nom non qualifié */
foo(); // Devient Foo\Bar\foo
foo::methodestatique(); // Devient Foo\Bar\foo, méthode methodestatique
echo FOO; // Devient la constante Foo\Bar\FOO
/* nom qualifié */
sousespacedenoms\foo(); // Devient la fonction Foo\Bar\sousespacedenoms\foo
sousespacedenoms\foo::methodestatique(); // devient la classe Foo\Bar\sousespacedenoms\foo,
                                  // méthode methodestatique
echo sousespacedenoms\FOO; // Devient la constante Foo\Bar\sousespacedenoms\FOO
                                  
/* nom absolu */
\Foo\Bar\foo(); // Devient la fonction Foo\Bar\foo
\Foo\Bar\foo::methodestatique(); // Devient la classe Foo\Bar\foo, méthode methodestatique
echo \Foo\Bar\FOO; // Devient la constante Foo\Bar\FOO
?>
   Notez que pour accéder à n'importe quelle classe, fonction ou constante 
   globale, un nom absolu peut être utilisé, tel que 
   \strlen() ou \Exception ou
   \INI_ALL.
   
Exemple #1 Accès aux classes, fonctions et constantes globales depuis un espace de noms
<?php
namespace Foo;
function strlen() {}
const INI_ALL = 3;
class Exception {}
$a = \strlen('hi'); // appel la fonction globale strlen
$b = \INI_ALL; // accès à une constante INI_ALL
$c = new \Exception('error'); // instantie la classe globale Exception
?>