Namespaces en PHP
¿Qué son los namespaces? En su definición más aceptada, los espacios de nombres son una manera de encapsular elementos .
php.net
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.
Estos fueron creados para evitar conflictos de nomenclatura con bibliotecas de 3eros y también la habilidad de abreviar nombres largos.
Los espacios de nombres de PHP proporcionan una manera para agrupar clases, interfaces, funciones y constantes relacionadas
<?php namespace namespace_name; /*todo lo que este luego de la declaracion estara en este namespace*/ ?>
Además de esta sintaxis podemos definir varios namespace
en un mismo archivo(fichero).
<?php namespace namespace_name; /*bloque de code*/ namespace namespace_name2; /*bloque de codigo*/ ?>
Por lo general, usamos namespace
en un MVC(Modelo vista controlador) en conjunto con las clases.
Algo de ejemplo así usamos use, en algunos frameworks como Laravel verá que usamos él use solamente, esto ocurre porque Laravel usa composer autoload.
Use por sí solo importa el namespace o clase al ámbito actual, no incluye el archivo.
Ejemplo simple de un namespace<?php namespace Salado; class Ca { function __construct(){ } public function saluda(){ echo "hola"; } } ?>
Use en Namespaces
Al usar use
podemos darle un alias, pero su uso es por ejemplo si nuestro namespace es algo así namespace/subnamespace/sub../sub../clase. En el caso de que haya muchos subdominios directamente podemos utilizar new ClaseName
.
<?php namespace Salado; include("Ca.php"); use Salado\Ca as C; $salado = new C; $salado->saluda(); ?>
Espacio de nombre(namespace) global
Sin ninguna definición de namespace, todas las definiciones de clases y funciones son colocadas en el espacio global, como si lo estuvieran antes que PHP soportara los espacios de nombres.
Prefijar un nombre con
php.net\
especificará que el nombre es requerido desde el espacio global incluso en el contexto del espacio de nombres.
Que quiere decir esto, quiere decir que podemos ingresar funciones globales o referirnos a cosas en el ámbito global cuando estemos dentro de un namespace con \
.
Esto lo puede ver en Laravel como en otros frameworks que algunos programadores usan el slash para hacer cosas algo particulares.
Referencias: php.net
- Anterior: introducción a POO en PHP
- Siguiente: manejo de errores en PHP
Estos son algunos temas que te pueden interesar luego de ver namespaces en PHP: