## 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 concebirse como un concepto abstracto, por varias razones. Por ejemplo, en un sistema de archivos, los directorios representan un grupo de archivos asociados y sirven como espacio de nombres para los archivos que contienen. Un ejemplo concreto es que el archivo `foo.txt` puede existir en ambos 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 archivo `foo.txt` desde fuera del directorio `/home/greg`, es necesario especificar el nombre del directorio utilizando un separador de directorios, 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 de PHP, los espacios de nombres están diseñados para resolver dos problemas que enfrentan 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 crear alias o acortar nombres como Nombres_Extremadamente_Largos para ayudar a resolver el primer problema y mejorar la legibilidad del código.

Los espacios de nombres de PHP proporcionan un medio para agrupar clases, interfaces, funciones o constantes. Aquí hay un ejemplo de sintaxis de los espacios de nombres de PHP:

Ejemplo #1 Ejemplo de sintaxis de espacios de nombres

    <?php
    namespace mi\nombre; // Ver la sección "Definición de espacios de nombres"

    class MiClase {}
    function mifuncion() {}
    const MICONSTANTE = 1;

    $a = new MiClase;
    print $a::class . "\n";
    $c = new \mi\nombre\MiClase; // Ver la sección "Espacio global"
    print $c::class . "\n";

    $a = strlen('hola'); // Ver "Uso de espacios de nombres: retorno al espacio global
    print $a . "\n";

    $d = namespace\MICONSTANTE; // Ver "El operador namespace y la constante __NAMESPACE__
    print $d . "\n";

    $d = __NAMESPACE__ . '\MICONSTANTE';
    echo constant($d); // Ver "Espacios de nombres y características dinámicas"

> Nota: Los nombres de espacios de nombres no son sensibles a mayúsculas/minúsculas.

> 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 usarse en el código del espacio de usuario.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open