El concepto de namespace en PHP

¿Te acuerdas cuando tu maestra de primaria te decía que tus libretas deberían estar bien ordenadas de acuerdo a la materia de la que trataran?

Pues bien los namespaces son una forma de organización de código que tenemos disponible en PHP; si vienes de un mundo parecido a Java seguramente recuerdas el concepto de paquete o package, que básicamente se encargaba de agrupar varias clases semántica o lógicamente relacionadas bajo un mismo folder (directorio físico o lógico).

Esa misma idea la tenemos en PHP y para usarlos sólo necesitas utilizar la palabra reservada namespace seguido del nombre que desees, por ejemplo si queremos que la clase User sea parte del espacio de nombres App, usaríamos la siguiente sintaxis.

namespace App;

class User {

}

Ventajas de los namespaces de PHP

  • Evitan colisiones entre clases; por ejemplo imagina que estás integrando dos sistemas diferentes bajo una misma aplicación pero ambos sistemas tienen una clase User. Sin usar namespaces no podrías user ambas clases en el mismo archivo PHP.
  • Capacidad de utilizar un alias cuando importas tus clases con el mismo nombre. Es decir, usando namespaces puedes definir un alias fácilmente como en el siguiente ejemplo:
namespace App;

use Webtraining\Auth\Models\User as WebtrainingUser;

class User {
    public function copyUser(WebtrainingUser $user) {
       // Some logic goes here!
    }
}

Para más información sobre aliasing/importing visita este artículo Using namespaces: Aliasing/Importing

Y aquí tienes el Namespaces overview de la documentación oficial.

Que tengas un excelente día.

Publicado por

Alex Arriaga

Alex es un profesional de la tecnología con mucha experiencia en entornos reales de producción. Disfruta compartiendo su conocimiento a través de su blog. Ha dirigido numerosos talleres y el desarrollo y entrega de muchos cursos de capacitación para desarrolladores e ingenieros de toda América Latina. Conferencista internacional. Miembro fundador de Webtraining. Su experiencia incluye, Tecnologías Web, Sistemas de gestión de contenido de código abierto, Tecnologías y bibliotecas de front-end, Task Runners. NPM, CSS3, HTML5, web móvil, Servidores Web, Servidores de Aplicaciones, Sistemas operativos tipo UNIX y, Investigación: Sistemas complejos, Inteligencia Artificial, Computación Gráfica y Simulación Computacional.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *