Foros del Web » Programando para Internet » PHP » Zend »

[SOLUCIONADO] Consulta acerca Namespacing en Zend Framework

Estas en el tema de Consulta acerca Namespacing en Zend Framework en el foro de Zend en Foros del Web. Hola, soy nuevo en esto del Zend Framework 2 y tengo 2 consultas acerca de algunos temas que no me quedan bien claros: 1. El ...
  #1 (permalink)  
Antiguo 18/04/2013, 19:29
 
Fecha de Ingreso: abril-2013
Mensajes: 5
Antigüedad: 10 años, 11 meses
Puntos: 0
Consulta acerca Namespacing en Zend Framework

Hola, soy nuevo en esto del Zend Framework 2 y tengo 2 consultas acerca de algunos temas que no me quedan bien claros:

1. El primero es acerca de los namespaces, también soy nuevo en esto de los namespaces pero luego de realizar una investigación en internet creo que entiendo el concepto, mi problema es que cuando veo dicho concepto aplicado en el Zend Framework 2 veo algunas cosas que no coinciden con lo que había entendido, por ejemplo, cuando voy hace uso de la clausula "use" para importar un namespace veo que también se incluye el nombre de la clase al final del namespace y según lo que entiendo de namespaces solo se debe poner el namespace de la clase que quieres utilizar. Luego de darle muchas vueltas al asunto se me ocurrió que el hecho de ponerle el nombre de la clase al final es por temas de autoloading de la clase y que el Zend Framework utiliza la nomenclaruta de namespace: ruta\completa\del\namespace\nombredelaclase para poder hacer el include/require de la clase. Quisiera que alguien me explicara sí de hecho es así o es que hay algo en el tema de los namespace que no estoy entendiendo.

2. El otro tema es con el archivo module.config del modulo Application del Skeleton Application, cuando uno define las rutas hay un route que se llama "home", lo que no entiendo aquí es como se carga ese route automaticamente cuando no se ha definido por ningún lado que a falta de una ruta modulo/controlador/action se cargue esa llamada "home". Lo que quiero decir es que si mi aplicación de zend framework carga en mi localhost: http://localhost como es posible que el controlador que yo defina en "home" se cargue como por arte de magia, es decir, donde está definido que cuando yo ponga http://localhost el cargue el route "home". Pregunto esto porque veo en el layout que en unos de los links hace el llamado a this->url("home"), de esta forma si me hace sentido porque le estamos indicando que cargue el route "home" que a su vez tiene definido un modulo y posterior un controlador y una acción, pero cuando pongo simplemente http://localhost no me hace sentido que cargue ese route "home".

Espero que se entiendan mis interrogantes.

Saludos y gracias de antemano por cualquiera ayuda que me puedan dar para entender esto.

Última edición por dreamcatcherstudio; 18/04/2013 a las 19:38
  #2 (permalink)  
Antiguo 18/04/2013, 19:57
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Consulta acerca Namespacing en Zend Framework

Puedes agregar el FQCN o bien hasta el segmento que quieras del namespace ahora después debes instanciar a partir del segmento, por ejemplo:

FQCN
Código PHP:
Ver original
  1. use Application\Entity\Foo;
  2. $foo = new Foo;
Segmento
Código PHP:
Ver original
  1. use Application\Entity;
  2. $foo = new Entity\Foo;

Sobre la ruta, el fw se encarga de parsear las rutas a través de un listener y la definición de cada ruta indica todo lo que preguntas

Código PHP:
Ver original
  1. 'home' => array(
  2.     'type' => 'Zend\Mvc\Router\Http\Literal',
  3.     'options' => array(
  4.         'route'    => '/',
  5.         'defaults' => array(
  6.             'controller' => 'Application\Controller\Index',
  7.             'action'     => 'index',
  8.         ),
  9.     ),
  10. ),

la opción route indica cual es la ruta, en el caso de home "/" osea el root, y en defaullts indica a donde mapea.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 18/04/2013, 22:55
 
Fecha de Ingreso: abril-2013
Mensajes: 5
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Consulta acerca Namespacing en Zend Framework

Muchas gracias por tu respuesta masterpuppet.

Acabo de hacer un buen número de pruebas con el tema de los namespace y al parecer es como tu dices, yo estaba entendiendo mal ese asunto. Al parecer sí debe ir el nombre de la clase al final del namespace cuando se hace uso de la cláusula "use", sin embargo noto que solo funciona con clases, cuando traté de accesar simples funciones (que no están dentro de una clase) solo funciona poniendo FQ function name en el llamado de la función, por ejemplo:
$testVar=perro\gato\functionTest();

En cuanto al tema de la ruta sigo sin entender, ¿lo que me escribiste quiere decir que el zend verifica del arreglo de rutas es por el valor "route" que está dentro de "options" ?????

Ejemplo: 'route' => '/',

En vez del valor que está debajo de "routes"

ejemplo:
'routes' => array(
'album' => array(

Porque no sé si mi pregunta se entendió, porque lo que no entiendo es por qué cuando escribo http://localhost se carga el routes llamado "home", entiendo lo que me dices, que más abajo se define en "options" que "route"=>"/" y que probablemente por eso carga el controlador/action que se define más abajo pero yo siempre pensé que el zend hacia match era con "'routes' => array('album' => array(" en vez de con el "'options' => array('route' => '/'," y pensé esto porque en el layout los links definen el URL así: $this->url("home"), pero bueno también tengo que ponerme a pensar que si solo fuera de esa forma el zend no pudiera hacer match si uno pusiera arbitrariamente una dirección en el URL bar del browser, es decir si uno pone album/album/delete/34 por ejemplo., la única forma de que pudiera entender es comparandolo con los valores "route" que están dentro de "'options' => array(".

Si alguién tiene algo que agregar al asunto se les agradecería infinitamente.

Saludos.
  #4 (permalink)  
Antiguo 19/04/2013, 06:02
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Consulta acerca Namespacing en Zend Framework

Si quieres ahondar en el tema de namespaces te sugiero que pases por la documentación de PHP.

Y sobre las rutas, no hay mucho misterio, la key routes guarda todas las rutas, el fw lo que hace es iterar por estas rutas y retornar en el primer match de la opción route.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 19/04/2013, 09:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Consulta acerca Namespacing en Zend Framework

En pocas palabras, no es porque el key 'home' sea la de defecto, si no porque es el match que hace a la route => '/'.
  #6 (permalink)  
Antiguo 19/04/2013, 13:08
 
Fecha de Ingreso: abril-2013
Mensajes: 5
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Consulta acerca Namespacing en Zend Framework

Muchas gracias por sus respuestas masterpuppet y GatorV, ahora sí me quedó claro lo del routing.

En cuanto a lo del namespace después del pocotón de pruebas que hice ayer también ya me quedó claro este tema, voy a revisar de todas formas la documentación de PHP con respecto al tema de namespaces como me sugiere masterpuppet

Saludos y muchas gracias.

Etiquetas: namespace
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:56.