Home Programación Los Servicios en Zend Framework 2

Por Carlos Nacianceno, @igormx

Zend Framework 2 trae consigo una serie de cambios de arquitectura en comparación con Zend Framework 1, lo que en ZF1 era Singletons, en ZF2 son Eventos; lo que en ZF1 es una estructura MVC rígida en ZF2 tenemos los Módulos.

Estos cambios también han impactado la forma en al que se maneja las librerías que antes sólo eran cargadas o registradas por autoloaders y llamadas en cualquier momento, sin tomar en cuenta requerimientos de instanciación,configuración y más.  Ahora en ZF2 tenemos servicios.

¿Qué es un servicio?

Son básicamente librerías, objetos o piezas de funcionalidad que cumple con un propósito concreto como enviar e-mails, loggers,  comunicación con bases de datos o servicios concretos. Una de las características que los diferencía es que un servicio debe tener en cuenta la reutilización que un servicio, tanto que podríamos usarla en cualquier proyecto sea ZF2 o no.

La necesidad de crear un servicio se hace patente cuando esa funcionalidad no se puede colocar ni en el modelo ni en el controlador, es decir, no tiene que ver con el proceso MVC de la aplicación.

Estructura básica de un servicio

El servicio básicamente tiene 2 carpetas:

Library  que contiene la estructura de directorios  con las clases que contienen nuestra funcionalidad, hay que tomar en cuenta que los namespaces de las clases tienen que coincidir con la estructura de directorios a la cual pertenecen.

Tests que contiene los test unitarios (buena práctica) del código funcional, la estructura de directorios y clases en tests debe ser un espejo de lo que hay en library. Además, debe tener un archivo phpunit.xml.dist quien contiene configuraciones para el PHPUnit, un archivo de arranque Bootstrap.php o bootstrap.php que es llamado por PHPUnit para establecer condiciones iniciales de los tests, y por último un archivo para el autoloading, que puede usarse el mecanismo de autoloading de ZF2 u otras herramientas de generación de lo mismo como phpab.

Archivos adicionales del servicio

Si el servicio se va a compartir en Github, se pueden añadir archivos como README, LICENSE,etc.

Si nuestro servicio requiere dependencias puede usarse composer para estleber tales dependencias de una manera más sencilla

Estándares de codificación

Nuestro servicio debe usar estándares de codificación adecuados, el de ZF2 es el siguiente: http://framework.zend.com/wiki/display/ZFDEV2/Coding+Standards.

Documentación

Tenemos que generar documentación adecuada de nuestro servicio, se recomienda ampliamente la generación de la misma a partir de los comentarios en el código con docBlocks y phpDocumentor.

Reutilización y publicación de nuestro servicio

Podemos publicar nuestro servicio en los siguientes sitios

http://packages.zendframework.com

https://packagist.org

http://github.com

Si alguien instala nuestro servicio usando composer, este será colocado en la carpeta vendor y tendrá que ser cargado y usado a través del Service Manager.

Espero que esta guía les sea útil.

 

Leave a Reply