en DESARROLLO DE SOFTWARE

Extendiendo Zend MVC: plugins y helpers

Cada vez que quiero añadir funcionalidades a un conjunto de clases, tengo el vicio de pensar en extenderlas. Sin embargo, tengo más que comprobado que muchas veces la extensión de clases no es una gran idea. Por eso el Zend Framework ofrece otros mecanismos para extender las funcionalidades normales de su MVC (Model View Controller). Veamoslas:

  • Zend View Helpers: si lo que queremos es que nuestras vistas generen un código complejo o no queremos ensuciarlas con código de la base de datos, podemos crear estos “helpers” para que las ayuden.
  • Zend Action Helpers: si tenemos código que se repite una y otra vez dentro de nuestros actions, quizá sea buena idea crear un Action Helper que nos ayude a simplificar y reutilizar nuestro código. Además, estos Helpers podrán ayudar a que unos actions se comuniquen con otros.
  • Zend Controller Plugins: los plugins del Front Controller nos permiten interceptar eventos que ocurren durante la resolución del MVC. Los más fáciles de entender son predispatch y postdispatch, que básicamente nos permiten escribir código que se ejecute antes o después de que se ejecute una acción. Por ejemplo podríamos escribir un plugin de autenticación que antes de que se ejecuten las acciones de un módulo compruebe que el usuario está autenticado. Así no tendremos que escribir código de comprobación de autenticación en cada Action, sino que valdrá con escribirlo en un solo sitio.
  • Zend Route Rewrite: ocurrirá habitualmente que tengamos URL´s como www.ejemplo.com/archivos/2007 y www.ejemplo.com/archivos/2006. En estos casos no queremos crear un Action para cada año. Queremos crear un Controller “archivos” y un solo Action reutilizable que muestre los archivos en función del año. El enrutador del ZF nos ayudará con ello.

Es una lección muy importante: aunque el primer instinto del programador sea extender una clase, el Zend Framework ofrece los suficientes mecanismos como para poder inyectar helpers, plugins o escribir reglas de enrutamiento para reutilizar código.

¡No hay que olvidarlo!

Escribe un comentario

Comentario