## Resumen de 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 aceptada, los espacios de nombres son una manera de encapsular elementos. Se pueden ver como un concepto abstracto en muchos aspectos. Por ejemplo, en cualquier sistema operativo, los directorios sirven para agrupar ficheros relacionados, actuando así como espacios de nombres para los ficheros que contienen. Como ejemplo, el fichero `foo.txt` puede existir en los directorios `/home/greg` y `/home/otro`, pero no pueden coexistir dos copias de `foo.txt` en el mismo directorio. Además, para acceder al fichero `foo.txt` fuera del directorio `/home/greg`, se debe anteponer el nombre del directorio al nombre del fichero, empleando el separador de directorios para así obtener `/home/greg/foo.txt`. Este mismo principio se extiende a los espacios de nombres en el mundo de la programación.

Versión | Descripción
--- | ---
7.0.0 | Añadidas las Declaraciones de use en grupo.

En el mundo de PHP, los espacios de nombres están diseñados para solucionar dos problemas con los que se encuentran los autores de bibliotecas y de aplicaciones al crear elementos de código reusable, tales como clases o funciones:

1. El conflicto de nombres entre el código que se crea y las clases/funciones/constantes internas de PHP o las clases/funciones/constantes de terceros.
2. La capacidad de apodar (o abreviar) Nombres_Extra_Largos diseñada para aliviar el primer problema, mejorando la legibilidad del código fuente.

Los espacios de nombres de 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 "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 `PHP` y `php`, y los nombres compuestos a partir de estos (como `PHP\Classes`) están reservados para el uso interno del lenguaje y no deben utilizarse en el código del espacio del usuario.