La commande namespace et la constante __NAMESPACE__
PHP supporte deux moyens pour acc�der de mani�re abstraite aux �l�ments dans l'espace de nom courant, � savoir la constante magique __NAMESPACE__ et la commande namespace.
La valeur de __NAMESPACE__ est une cha�ne qui contient le nom de l'espace de noms courant. Dans l'espace global, sans nom, elle contient une cha�ne vide.
Exemple #1 Exemple avec __NAMESPACE__, dans un code avec espace de noms
<?php
namespace MonProjet;
echo '"', __NAMESPACE__, '"'; // affiche "MonProjet"
?>
Exemple #2 Exemple avec __NAMESPACE__, dans un code avec espace de noms global
<?php
echo '"', __NAMESPACE__, '"'; // affiche ""
?>
La constante __NAMESPACE__ est utile pour construire dynamiquement des noms, tels que :
Exemple #3 Utilisation de __NAMESPACE__ pour une construction dynamique de noms
<?php
namespace MonProjet;
function get($classname)
{
$a = __NAMESPACE__ . '\\' . $classname;
return new $a;
}
?>
La commande namespace peut aussi �tre utilis�e pour demander explicitement un �l�ment de l'espace de noms courant, ou d'un sous-espace. C'est l'�quivalent pour les espaces de noms de l'op�rateur self des classes.
Exemple #4 l'op�rateur namespace, dans un espace de noms
<?php
namespace MonProjet;
use blah\blah as mine; // Voyez "Utilisation des espaces de noms : importation et alias"
blah\mine(); // appelle la fonction MonProjet\blah\mine()
namespace\blah\mine(); // appelle la fonction MonProjet\blah\mine()
namespace\func(); // appelle la fonction MonProjet\func()
namespace\sub\func(); // appelle la fonction MonProjet\sub\func()
namespace\cname::method(); // appelle la m�thode statique "method" de la classe MonProjet\cname
$a = new namespace\sub\cname(); // instantie un objet de la classe MonProjet\sub\cname
$b = namespace\CONSTANT; // assigne la valeur de la constante MonProjet\CONSTANT � $b
?>
Exemple #5 l'op�rateur namespace, dans l'espace de noms global
<?php
namespace\func(); // appelle la fonction func()
namespace\sub\func(); // appelle la fonction sub\func()
namespace\cname::method(); // appelle la m�thode statique "method" de la classe cname
$a = new namespace\sub\cname(); // instantie un objet de la classe sub\cname
$b = namespace\CONSTANT; // assigne la valeur de la constante CONSTANT � $b
?>