(PHP 5 >= 5.3.0, PHP 7)
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 nombre_clase
{
function __construct()
{
echo __METHOD__,"\n";
}
}
function nombre_func()
{
echo __FUNCTION__,"\n";
}
const nombre_const = "global";
$a = 'nombre_clase';
$obj = new $a; // imprime nombre_clase::__construct
$b = 'nombre_func';
$b(); // imprime nombre_func
echo constant('nombre_const'), "\n"; // imprime global
?>
Ejemplo #2 Acceder dinámicamente a elementos de un espacio de nombres
<?php
namespace nombre_espacio_de_nombres;
class nombre_clase
{
function __construct()
{
echo __METHOD__,"\n";
}
}
function nombre_func()
{
echo __FUNCTION__,"\n";
}
const nombre_const = "de espacio de nombres";
/* observe que si se emplean comillas dobles, se debe usar "\\nombre_espacio_de_nombres\\nombre_clase" */
$a = '\nombre_espacio_de_nombres\nombre_clase';
$obj = new $a; // imprime nombre_espacio_de_nombres\nombre_clase::__construct
$a = 'nombre_espacio_de_nombres\nombre_clase';
$obj = new $a; // también imprime nombre_espacio_de_nombres\nombre_clase::__construct
$b = 'nombre_espacio_de_nombres\nombre_func';
$b(); // imprime nombre_espacio_de_nombres\nombre_func
$b = '\nombre_espacio_de_nombres\nombre_func';
$b(); // también imprime nombre_espacio_de_nombres\nombre_func
echo constant('\nombre_espacio_de_nombres\nombre_const'), "\n"; // imprime de espacio de nombres
echo constant('nombre_espacio_de_nombres\nombre_const'), "\n"; // también imprime de espacio de nombres
?>
Asegúrese de leer la nota sobre escapar nombres de espacios de nombres en cadenas.