martes, 30 de septiembre de 2014

Primeros pasos con Zend Framework 2

Crear un proyecto para Zend Framework 2 es muy sencillo, con la herramienta git podemos descargar el esqueleto básico de nuestra aplicación del repositorio de Zend Framework.

Previamente podemos instalar git, tan solo hemos de descargarlo de la página oficial de git y ejecutar el instalador.
Para crear nuestro proyecto clonaremos el repositorio de Zend Framework, para ello supongamos que deseamos crear una aplicación llamada myApp:

cd myworkspace
git clone git://github.com/zendframework/ZendSkeletonApplication.git myApp
cd myApp
php composer.phar self-update
php composer.phar install


Ahora sólo nos falta configurar nuestro servidor de aplicaciones para que acceda a la carpeta donde tenemos ubicado nuestro proyecto.

En mi caso uso Zend Server, y como IDE Zend Studio. El proceso de creación de una aplicación es muy sencillo, vamos a File -> New -> PHP Project from Git:


Definiremos los campos de Location con el directorio de nuestro área de trabajo.
PHP Server será el servidor Zend destino.
La URI es la dirección del repositorio del esqueleto de Zend:
git://github.com/zendframework/ZendSkeletonApplication.git 

Una vez creado dispondremos del árbol de directorios en nuestro entorno de desarrollo.
En Zend Studio podremos hacer un deploy de nuestra aplicación a Zend Server y poder ver los resultados rápidamente y sin complicaciones:


Ahora ya disponemos de nuestra aplicación para ser explorada (http://localhost/myApp):

Realmente sencillo y efectivo.

Algunos aspectos interesantes a tener en cuenta en Zf2:
  • Se usa el estándar de codificación de Zend, se usa phtml para las vistas pero no para las clases.
  • El código generado en HTML es exclusivo de las vistas, en las clases nunca se generará HTML.
  • Atributos de las clases siempre privados o protegidos, principio de ocultación o encapsulación. Usaremos las funciones setter/getter para acceder a los atributos.
  • Se debe usar el CamelCase:
    En los nombres de clases se empieza siempre por mayúsculas.
    Métodos y variables con minúscula la primera y luego a cada palabra en Mayúsculas:
    variable: miVariable, nombrePersona, contadorPalabras, etc.
    clases: Usuarios, Paginas, ControlUsuarios, etc.
  • No usar short tags. El uso de "<?= ... ?>" debe evitarse, mejor usar en su lugar "<?php .... ?>". Recordar siempre finalizar las instrucciones en ";".
    Ej; <a href="<?php echo $this->url('home'); ?>">
  • Respetar el nombre de los archivos que se llamen igual que la clase contenida.

¿Por qué Zend Framework?

Llega un momento en que se ha de hacer un alto en el camino y reflexionar sobre lo visto. Después de un tiempo trabajando con Zend Framework, de recoger experiencia, de visitar páginas y sobre todo de picar código me quedan claros las ventajas de usar Zend.

¿Por qué usar un Framework?

Un framework es un conjunto de librerías que nos proporcionan un marco de trabajo. Una filosofía de trabajo que nos permite, entre otras cosas:
  • Mayor orden. Sistema modular que nos permite separar desarrollos.
  • Mayor independencia, nos brinda un marco de trabajo común que facilita la distribución del trabajo entre desarrolladores.
  • Aplicación de patrones.
  • Mayor seguridad. La comunidad proporciona los últimos avances y tendencias, delegando las tareas comunes de filtrado y verificación de datos de formularios a la funcionalidad del framework.

¿Por qué Zend Framework?

 En el caso que nos ocupa Zend Framework nos brinda:
  • Está hecho en PHP, actualmente uno de los lenguajes de script para desarrollo en web más populares.
  • Está basado en SPL (Standard PHP library), que son un conjunto de clases nativas de PHP.
  • Es gratuito.
  • Es potente.
  • Es flexible, tanto podemos usarlo como framework como sus módulos por separado.
  • Securizado (en ambiente web). Dota de mecanismos de filtrado de entrada de datos.
  • Orientado a Eventos (Event Manager).
  • Extensible como por ejemplo los plugins de youtube.

¿Por qué Zend Framework 2?

Puede asaltarnos la duda del uso de Zend Framework 1 o 2, está claro que la segunda versión es una revisión de la primera con muchísimos aspectos mejorados:
  • Autoloading mejorado.
  • Namespaces, usado para el manejo de rutas.
  • 100% orientado a Eventos.
  • Trabaja con DOM (jQuery, etc).
  • Empaquetamiento PHAR. Podemos usar ZendSkeleton para desplegar un proyecto.
  • Usa patrones de desarollo MVC (Modelo-Vista-Controlador), Doctrine, etc.
  • Capa de abstracción de la base de datos.
  • Mejorado el soporte multilenguaje.
En Zend Framework 1 disponíamos de los controladores en la raíz de la aplicación, en cambio en Zend Framework 2 se dispone de un nivel de orden jerárquico más siendo este los módulos, donde ubicaremos nuestros controladores, vistas, layouts, etc. Así, en un proyecto simple podríamos pensar que Zend Framework 1 nos puede ser suficiente, pero un desarrollo de ya más alta envergadura, más extenso, separar las diferentes áreas funcionales del aplicativo en módulos nos permitirá tener un código más claro y fácil de mantener.