19/02/2009 -
Smarty, como muchos podrán saber, es un
sistema de plantillas para PHP, muy utilizado y que a nuestro modo de ver y sin nunca haberlo puesto en producción, parece muy potente.
La noticia es que diversos sitios web y blogs especializados en el desarrollo en PHP están divulgando informaciones y posts en rechazo al uso de Smarty: "Say NO to Smarty".
La filosofía inicial de Smarty es, en su planteamiento, muy buena. Según publican en la página web de este componente para PHP, Smarty permite separación total entre diseño y programación, es decir, entre aspecto y lógica de negocio. En teoría, con Smarty, se puede crear un sistema de plantillas que pueden editar diseñadores, sin tener que estar familiarizados con la codificación en PHP. Por otra parte, los programadores, pueden escribir código PHP sin tener que preocuparse con el aspecto que tendrá la salida de sus scripts. Las ventajas son diversas, como una teórica mayor facilidad de mantenimiento, de trabajo en grupo entre distintos profesionales, etc.
Según leemos en diversos sitios, en la práctica y según sus críticos, Smarty (o cualquier otro sistema de plantillas)
no cubre los objetivos que se propone. Dicen que primero, por mucho que se empeñen, es muy complicado o imposible separar toda la lógica de negocio de la presentación. Además los diseñadores van a tener que acabar aprendiendo algún lenguaje (si no es PHP, pues será el lenguaje de Smarty para sustituir variables o implementar tomas de decisión o bucles). Apuntan también que no es cierto que se pueda cambiar todo el diseño sin tener que mover una línea de código, ya que el diseñador puede desear mostrar un dato que antes no figuraba en un lugar y para ello el programador tendría que cambiar el script y enviar ese dato a la nueva plantilla que lo muestra.
Pero el problema que apuntan que más preocupante parece es que el sistema de plantillas requiere una infraestructura de diversos directorios, donde está la plantilla, la plantilla compilada, la caché del código generado para una página, etc. Manejar todos estos archivos, aunque muchos de ellos se crean automáticamente, significa un engorro para el desarrollador y una carga innecesaria para el servidor web. A la hora de cambiar cualquier código en la plantilla, la plantilla tiene que volver a compilarse, pero en ocasiones habrá que borrar a mano la plantilla antigua compilada, porque si está en la estructura de directorios no se compila de nuevo por si sola.
La guinda es que a veces, por una estrategia inadecuada en el uso de plantillas, podemos encontrar errores en tiempo de ejecución en códigos que ha generado Smarty automáticamente, que no son nuestros y por tanto es muy complicado de revisar y corregir. Con todo, lo que ocurre es que dejamos de programar en PHP para programar plantillas, con un lenguaje similar pero diferente, con lo que tenemos que aprender algo nuevo.
Luego Smarty, u otros sistemas de plantillas del mercado, interpreta el código de la plantilla para generar un código PHP, sobre el que no tenemos control. Acabamos pues a merced de un código ajeno a nosotros que hace las cosas por si mismo y que por ello desciende el control que tenemos con la aplicación.
En definitiva, que hay amigos y detractores de todas las tecnologías y softwares, pero está bien que nos planteemos seriamente si queremos o no adoptar nuevas herramientas para el desarrollo de nuestros sitios, si van o no a hacernos las cosas más sencillas realmente. Yo realmente no tengo experiencia ni conocimientos para saber aconsejar o no al sistema de plantillas de Smarty, sólo me limito a expresar estas opiniones, que quizás tengan fundamento.
Puedes encontrar más información en:
http://nosmarty.net/