Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/03/2012, 09:45
Avatar de maycolalvarez
maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 5 meses
Puntos: 1532
Respuesta: namespaces en 5.3

usar Namespaces no quiere decir que el autoload sea implícito, los autoload siempre se registran y continúan registrándose de forma explícita.

spl_autoload_register

el objetivo de un Namespace no es, ni nunca ha sido el de ofrecer autoload, el objetivo lo indica su nombre "espacio de Nombres" cuyo propósito es empaquetar diferentes funcionalidades o librerías las cuales puedan tener clases con nombres redundantes, y dicho concepto aplica para cualquier lenguaje POO.

Por ejemplo puedo tener 2 librerias las cuales tengan una clase en común como "Response", antes se tenía que añadir un prefijo para poder usar ambas clases en tiempo de ejecución (PdfResponse, HttpResponse por ejemplo) de otro modo ocurría un error de redeclaración de clases, en cambio si empaqueto mis librerias con un namespace específico puedo instanciar ambas clases en tiempo de ejecución:

$responsePDF = new PDFNamespace\Response();
$responseHTTP = new HttpNamespace\Response();

ése es el objetivo de los espacios de nombres.

el objetivo del keyword Use es definir un shortcut para un namespace definido, además de poder asignar un alias., el use no es necesario, por lo cual lo siguiente es válido:

$miclase = new \ruta\hacia\el\namespaces\Clase();

con ello No necesito Use, aunque para mejorar la apariencia del código se recomienda su uso.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...