PHP - duda con namespaces

 
Vista:
sin imagen de perfil
Val: 135
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

duda con namespaces

Publicado por jose luis (65 intervenciones) el 10/09/2021 00:06:52
si tengo por ejemplo dos clases que se llaman igual en dos namespaces diferentes por ejemplo

1
2
3
4
5
namespace1
clase
{
 
}

1
2
3
4
5
namespace2
clase
{
 
}

luego en el programa principal llamo a los dos namespaces:

1
2
use namespace1
use namespace2

luego para llamar a la clase del namespace1 como hago?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

duda con namespaces

Publicado por Mauro (1036 intervenciones) el 10/09/2021 13:49:16
Hola José Luis!

Interesante pregunta :)

La idea de los namespaces es, precisamente, evitar la ambigüedad cuando se utilizan clases. Esto hace mucho más simple la integración de paquetes de terceros.

Un detalle que creo que estás pasando por alto es que el

1
use Namespace

En realidad debería ser

1
use Namespace\Clase

Es decir, la sentencia use sólo puede utilizarse para declarar que, en el archivo que la incluyas, estarás utilizando una clase de un paquete específico.

De hecho, el use no es más que una suerte de atajo para ahorrarte algunos teclazos. Para verlo más correctamente podrías comenzar por no usar use, de modo que al instanciar tus objetos podrías utilizar:

1
2
$obj1 = new Namespace1\Clase();
$obj2 = new Namespace2\Clase();

En este pequeño ejemplo puedes ver cómo no hay ninguna confusión posible, el obj1 es de la clase del primer Namespace y el obj2 es de la segunda.

Si quisieras hacer lo mismo utilizando use podrías hacer algo como:

1
2
3
4
5
use Namespace1\Clase as Clase1;
use Namespace2\Clase as Clase2;
 
$obj1 = new Clase1();
$obj2 = new Clase2();

En este caso (bastante raro por cierto) en el que quieres incluir dos clases diferentes con el mismo nombre, si quieres usar la sintaxis abreviada necesitarás darle un alias a cada una, como se ve aquí.

Espero haberte ayudado, ya me consultas cualquier duda :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar