(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Dans le cadre des règles de résolution, il y a plusieurs définitions importantes :
Ceci est un identifiant ne contenant pas un séparateur d'espace de noms. Par exemple : Foo
Ceci est un identifiant contenant un séparateur d'espace de noms. Par exemple : Foo\Bar
Ceci est un identifiant qui commence par un séparateur d'espace de noms. Par exemple : \Foo\Bar
. L'espace de noms Foo
est aussi un nom absolu.
C'est un identifiant commençant par namespace
, tel que namespace\Foo\Bar
.
Les noms sont résolus en suivant les règles suivantes :
\A\B
se traduit par A\B
. namespace
remplacé par le namespace courant. Si le nom apparait dans le namespace global, le préfixe namespace\
est retiré. Par exemple namespace\A
dans le namespace X\Y
se traduit par X\Y\A
. Le même nom dans le namespace global se traduit par A
. A\B\C
est importé comme C
, le nom C\D\E
est traduit par A\B\C\D\E
. C\D\E
dans le namespace A\B
, est traduit par A\B\C\D\E
. use A\B\C;
un usage tel que new C()
correspond au nom A\B\C()
. De la même manière, après use function A\B\foo;
un usage tel que foo()
correspond au nom A\B\foo
. new C()
dans le namespace A\B
correspond au nom A\B\C
. A\B
, voici comme un appel à la fonction foo()
est résolu : A\B\foo()
. foo()
. Exemple #1 Exemples de résolutions d'espaces de noms
<?php
namespace A;
use B\D, C\E as F;
// appels de fonctions
foo(); // tente d'appeler la fonction "foo" dans l'espace de noms "A"