martes, 12 de febrero de 2008

Symfony vs Zend Framework. 1- Definición del problema

Desde hace un par de años están tomando mucho auge diversos frameworks en PHP: Prado, Tigermouse, Symfony, CodeIgniter... Realmente hay una gran variedad de ellos haciendo difícil la tarea de elegir uno. Por si éramos pocos, durante el año pasado surgió Zend Framework (ZF en adelante) con todo el apoyo de la compañía que lleva las riendas del desarrollo del intérprete PHP.
Parecía que ZF iba a desplazar a todos los demás, pero entonces llegó Yahoo y anunció la adopción de Symfony para desarrollar Del.icio.us. Podríamos decir, con permiso de los demás, que la partida huele a tablas entre ambos al menos mediáticamente.

Todo esto invita a hacer una comparativa y la haremos desde el punto de vista de alguien que nunca ha utilizado ninguno de ellos. Para ello haremos una aplicación bastante simple: un blog (puede que no sea muy original) y partiendo de un diseño común la escribiremos utilizando ambos frameworks.

En principio dedicaremos capítulos diferentes a cada uno de los frameworks y, aunque no hay intención de que tengan estructura de tutorial, detallaremos bastantes de los pasos seguidos para la implementación. En la última parte comentaremos las conclusiones a las que lleguemos.

La aplicación

Simplificaremos bastante la aplicación, contemplando las siguientes historias a desarrollar.

1- El blogger escribe, edita o borra artículos.
2- El lector lee artículos
3- El lector añade comentarios a un artículo.



No incluiremos procesos de autenticación de usuarios.

Por supuesto el diseño de la BD será el mismo para ambos casos y responderá a este esquema:


Aclararemos aquí que seremos estrictos con el nombre de los campos. Como se verá mas adelante nos resultaría más fácil llamar id a los campos clave de cada tabla, de lo contrario nos veremos obligados, por ejemplo en el caso de Symfony, a extender las definiciones de nuestros campos en los ficheros yaml. Lo mismo ocurriría si llamásemos created_at a los campos fecha_creacion.


En cuanto a la capa de presentación elegiremos un diseño de la web freecsstemplates Para ello buscaremos uno que se adecue a la siguiente disposición:



Hay bastantes donde elegir. Nosotros nos quedaremos con Pluralism ya que cumple con nuestras características deseadas.



Así pues, a partir de nuestros casos de uso y con el diseño elegido, tenemos las siguientes páginas a desarrollar:

  • Listado de posts. En él se podrán leer directamente el cuerpo de los posts recientes y aprovechando la maquetación de pluralism tendremos un listado de posts (de sus títulos) inmediatamente antes del pie. Ya que no hay validación de usuarios colocaremos cerca de este bloque el enlace que nos permitirá crear una entrada nueva.
  • Edición de posts. Aquí se crearán, modificarán y borrarán los artículos. Será un entorno muy básico sin edición WYSIWYG, etc.
  • Añadir comentarios. Al igual que antes será un entorno muy simple.


Otras consideraciones a tener en cuenta


Por lo general no abarcaremos detalles de carácter avanzado como la instalación o la posibilidad de utilizar plugins porque simplemente nos pondremos en el caso más práctico: hacer una aplicación que funcione.

Por supuesto se intentará que ambas versiones sean lo más similares posible en aspecto y funcionamiento.

Versiones utilizadas

Usaremos el recién horneado Zend Framework 1.5 (que sigue siendo una beta en el momento de escribir esto) y el paquete Sandbox de Symfony 1.0 que en teoría tiene todo lo necesario para comenzar una aplicación como esta.
Como base de datos haremos uso de MySQL en ambas aplicaciones.

Powered by ScribeFire.

3 comentarios:

Carlos Zaragoza dijo...

que genial q hagas un test como este, agradezco tu aporte y me gustaria saber como vas con el resultado del mismo.

Anónimo dijo...

Genial articulo; pero por favor podrias arreglar el post para que se puedan ver las imagenes del "caso de uso" y del "layout"

deuteros dijo...

He vuelto a añadir las imágenes. Gracias por avisar.