(PHP 5 >= 5.3.0)
¿Qué son los espacios de nombres? En su definición más amplia los espacios de nombres son una manera de encapsular elementos. Se puede ver como un concepto abstracto en muchos aspectos. Por ejemplo, en cualquier sistema operativo los directorios sirven para agrupar archivos relacionados, y actúan como espacios de nombres para los archivos que hay en ellos. Como ejemplo, el archivo foo.txt puede existir en los directorios /home/greg y /home/otro, pero no pueden existir dos copias de foo.txt en el mismo directorio. Además, para acceder al archivo foo.txt fuera del directorio /home/greg se debe añadir el nombre del directorio delante del nombre del archivo usando el separador de directorios para obtener /home/greg/foo.txt. Este mismo principio se extiende a los espacios de nombres en el mundo de la programación.
En el mundo de PHP, los espacios de nombres están diseñados para solucionar dos problemas que los autores de bibliotecas y aplicaciones se encuentran cuando crean elementos de código reusable tales como clases o funciones:
Los espacios de nombres en PHP proporcionan una manera para agrupar clases, interfaces, funciones y constantes relacionadas. Un ejemplo de la sintaxis de los espacios de nombres de PHP:
Ejemplo #1 Ejemplo de sintaxis de espacios de nombres
<?php
namespace mi\nombre; // véase la sección "Definir Espacios de Nombres"
class MiClase {}
function mifunción() {}
const MICONSTANTE = 1;
$a = new MiClase;
$c = new \mi\nombre\MiClase; // véase la sección "Espacio Global"
$a = strlen('hola'); // véase la sección "Usar espacios de nombres: una alternativa a
// funciones/constantes globales"
$d = namespace\MICONSTANTE; // véase la sección "El operador namespace y
// la constante __NAMESPACE__"
$d = __NAMESPACE__ . '\MICONSTANTE';
echo constant($d); // véase la sección "Espacios de Nombres y características dinámicas del lenguaje"
?>
Nota:
Los nombres de espacio de nombres PHP y php, y los nombres compuestos a partir de estos nombres (como PHP\Classes) están reservados para el uso del lenguaje interno y no deben ser utilizados en el código.