Introducción a los espacios de nombres

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

¿Qué son los espacios de nombres? En su definición más amplia, representan un medio para encapsular elementos. Esto puede ser concebido como un concepto abstracto, por varias razones. Por ejemplo, en un sistema de ficheros, los directorios representan un grupo de ficheros asociados y sirven de espacio de nombres para los ficheros que contienen. Un ejemplo concreto es que el fichero foo.txt puede existir en los dos directorios /home/greg y /home/other, pero que las dos copias de foo.txt no pueden coexistir en el mismo directorio. Además, para acceder al fichero foo.txt desde fuera del directorio /home/greg, es necesario especificar el nombre del directorio utilizando un separador de directorios, tal como /home/greg/foo.txt. El mismo principio se aplica a los espacios de nombres en el mundo de la programación.

En el mundo PHP, los espacios de nombres están diseñados para resolver dos problemas que encuentran los autores de bibliotecas y aplicaciones al reutilizar elementos como clases o bibliotecas de funciones:

  1. Colisiones de nombres entre el código que se crea, las clases, funciones o constantes internas de PHP, o las de bibliotecas de terceros.
  2. La capacidad de hacer alias o acortar Nombres_Extremadamente_Largos para ayudar a resolver el primer problema y mejorar la legibilidad del código.

Los espacios de nombres PHP proporcionan un medio para agrupar clases, interfaces, funciones o constantes. A continuación se muestra un ejemplo de sintaxis de los espacios de nombres PHP:

Ejemplo #1 Ejemplo de sintaxis de los 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 "Utilizar 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 los espacios de nombres no son sensibles a la casilla.

Nota:

Los espacios de nombres PHP, así como los nombres compuestos que comienzan con estos nombres (como PHP\Classes) están reservados para el uso interno del lenguaje y no deben ser utilizados en el código del espacio de usuario.