https://anexsoft.com/que-son-y-ejemplo-de-namespaces-en-php
En pocas palabras un espacio de nombre o Namespace es un contenedor que nos permite agrupar nuestro código para darle un uso posterior de esta manera evitamos conflictos de nombre. Por ejemplo, tenemos 2 funciones con el mismo nombre esto generaría un conflicto de nombre pero mediante el uso de namespace damos solución a este problema.
Pero la mejor definición que le puedo dar a los Namespace es que nos ayuda y sirven para organizar, restructurar mejor nuestro código.
¿CÓMO DECLARAR UN NAMESPACE?
Para declarar un Namespace como recomendación lo haremos siguiendo la secuencia las carpetas, por ejemplo yo he creado una clase llamado Hello en la siguiente ruta anexsoft/helpers/Hello.php. Por lo tanto mi namespace sería el siguiente:
namespace Anexsoft\Helpers;
class Hello {
public static function sayHello(){
return ‘Hello World’;
}
}
¿CÓMO HACER USO DE LOS NAMESPACE?
Como vimos en el código anterior la clase contiene un método estático por lo cual no hace falta instaciarlo para llamarlo. Entoces yo haré una prueba en mi archivo index.php para llamar al método.
<?php
require_once ‘anexsoft/helpers/Hello.php’;
echo Hello::sayHello();
Y obtendremos el siguiente error
Class ‘Hello’ not found in C:\wamp64\www\tutoriales\namespace\index.php on line 4
Porque como mencione los namespaces son contenedores para agrupar código, por lo tanto si queremos hacer uso del método de la clase Hello debemos llamar al namespace y hay 2 formas de hacerlo.
LA PRIMERA ES HACER USO DE LA PALABRA RESERVA USE
use Anexsoft\Helpers\Hello;
echo Hello::sayHello();
Esta forma es recomendada si vamos hacer uso de la clase Hello varias veces.
LA SEGUNDA FORMA ES LLAMARLO DIRECTAMENTE
echo Anexsoft\Helpers\Hello::sayHello();
En este ejemplo el Namespace será llamado una sola vez por lo tanto no hace falta hacer el Use, si vamos a usar más cosas que contiene el namspace entonces mejor es hacer uso del use.
AGRUPANDO FUNCIONES Y CONSTANTES
NAMESPACE
namespace Anexsoft\Helpers;
const user = ‘eduardo’;
function sayHelloTo(){
return 'Hello ’ . user;
}
EJEMPLO DE USO: CON FUNCIONES
use function Anexsoft\Helpers\sayHelloTo;
echo sayHelloTo();
EJEMPLO DE USO: CON CONSTANTES
use const Anexsoft\Helpers\user;
echo user;
COMO INVOCAR VARIOS ESPACIOS DE NOMBRE
Si bien podemos hacer uso de varios “USE” lo que me gusta hacer a mi es separarlo con “,”.
use Anexsoft\Core\Database,
Anexsoft\Core\Http,
Anexsoft\Core\Exceptions,
Anexsoft\Core\Helpers,
Anexsoft\Core\Crypt;
En PHP 7 si estamos trabajando con el mismo espacio de nombre podemos separarlo por llaves.
use Anexsoft\Core{Database, Http, Exceptions, Helpers, Crypt};