(PHP 5 >= 5.3.0)
La implementación de PHP de los espacios de nombres está influenciada por su naturaleza dinámica como lenguaje de programación. Así, para convertir código como el del siguiente ejemplo en código de espacios de nombres:
Ejemplo #1 Acceder dinámicamente a elementos
ejemplo1.php:
<?php
class nombreclase
{
function __construct()
{
echo __METHOD__,"\n";
}
}
function nombrefunc()
{
echo __FUNCTION__,"\n";
}
const nombreconst = "global";
$a = 'nombreclase';
$obj = new $a; // imprime nombreclase::__construct
$b = 'nombrefunc';
$b(); // imprime nombrefunc
echo constant('nombreconst'), "\n"; // imprime global
?>
Ejemplo #2 Acceder dinámicamente a elementos de un espacio de nombres
<?php
namespace nombreespaciodenombres;
class nombreclase
{
function __construct()
{
echo __METHOD__,"\n";
}
}
function nombrefunc()
{
echo __FUNCTION__,"\n";
}
const nombreconst = "de espacio de nombres";
include 'ejemplo1.php';
$a = 'nombreclase';
$obj = new $a; // imprime nombreclase::__construct
$b = 'nombrefunc';
$b(); // imprime nombrefunc
echo constant('nombreconst'), "\n"; // imprime global
/* observe que si se usan comillas dobles, se debe usar "\\nombreespaciodenombres\\nombreclase" */
$a = '\nombreespaciodenombres\nombreclase';
$obj = new $a; // imprime nombreespaciodenombres\nombreclase::__construct
$a = 'nombreespaciodenombres\nombreclase';
$obj = new $a; // también imprime nombreespaciodenombres\nombreclase::__construct
$b = 'nombreespaciodenombres\nombrefunc';
$b(); // imprime nombreespaciodenombres\nombrefunc
$b = '\nombreespaciodenombres\nombrefunc';
$b(); // también imprime nombreespaciodenombres\nombrefunc
echo constant('\nombreespaciodenombres\nombreconst'), "\n"; // imprime de espacio de nombres
echo constant('nombreespaciodenombres\nombreconst'), "\n"; // también imprime de espacio de nombres
?>
Asegúrese de leer la nota sobre escapar nombres de espacios de nombres en cadenas.