lunes, 21 de noviembre de 2011

Uso de SMARTY en un patrón MVC - I

Es bastante común, sobre todo en grandes proyectos, que existan dentro del equipo de desarrollo dos personas con tareas distintas: una es el diseñador gráfico y otra que ocupa el puesto de programador.

Sin embargo, en la mayoría de lenguajes de programación y mas aún en la programación en PHP, estas dos labores las realiza una misma persona y una de las malas prácticas de desarrollo consiste en embeber código de programación junto con el diseño y la maquetación.

Uno de los objetivos de Smarty es solucionar este problema, y desde cubenube hemos elegido ésta herramienta para facilitarnos el desarrollo de nuestra solución para el Internet de las cosas.






¿Que es smarty?

Smarty es un motor de plantillas Open Source para PHP.

Smarty separa el código PHP de lógica de negocio, del código de lógica de presentación.

¿Que nos ofrece smarty?
  • Multi-diseño.
  • Multi-idoma
  • sistema de cache avanzado
  • Escalabilidad
  • Plantillas limpias fáciles de usar por los diseñadores.
  • Mantenimiento más sencillo (al igual que la escalabilidad, únicamente con la separación de código y presentación no se consigue un mantenimiento más sencillo, también se requerirá de una buena codificación).
  • Depuración óptima del código, al tener ficheros pequeños únicamente con código PHP.
  • Posibilidad de introducir comentarios dentro de las plantillas que no se enviarán al servidor. Ejemplo: {* comentario smarty *} en lugar de<!-- comentario HTML -->
  • Funciones integradas que facilitan el tratamiento de variables. Ejemplos: {foreach}{/foreach}{if}{else}{/if}.
  • Funciones asistentes para generación de código HTML. Ejemplos:{html_image file=”banner.jpg”} generaría <img src="banner.jpg" alt="" width="700" height="55" />
  • Expandir Smarty con más funcionalidades mediante plugins.


¿Donde ublicamos Smarty en MVC?

Si hemos decidido el uso de un patrón MVC en nuestro proyecto, Smarty lo implementamos en la capa vista por lo que nuestra aplicación no depende del diseño y permite el mantenimiento mucho mas fácil sin realizar cambios drásticos en la parte de programación.

Conceptos Previos

La sintaxis de Smarty es muy similar a la de PHP pero con pequeñas variaciones. Por ejemplo las instrucciones se delimitan con llaves ( { } ) , pueden agregarse comentarios dentro de la plantilla ( { * * } ) , existen las estructuras de control IF y FOREACH (para el manejo de variables tipo Array) y otras variaciones de estructuras de control. Las variables se representan con el signo de ( $ ).

Una plantilla puede incluir varias plantillas, con lo cual se consigue una estructura de árbol.

Ejemplo básico de uso de Smarty

Antes de empezar debemos bajarnos la librería, la ultima que ha sido liberado es la versión 3.1.5.

Una vez hemos descargado la librería, mostramos un ejemplo practico y básico del uso de smarty.

Index.php:

<?php
//incluye y crea el objeto de smarty
require 'Smarty.class.php'; //asumimos que tenemos la variable SMARTY_DIR definida en nuestro include_path
$smarty = new Smarty;
//establecemos que usamos cache
$smarty->caching = 1;
//se asegura que la plantilla no se carga desde cache si este ha cambiado
$smarty->compile_check = true;
//incluimos el fichero de proceso backend,
require '../controllers/backend.php';
$backend = new Backend;
if ($_GET == 'submit')
$backend->submitEntry($_POST[name], $_POST[comment]);
//asignamos las variables al smarty
$smarty->assign("titulo","ejemplo de Smarty");
//asignamos otras variables del controlador
$smarty->assign("nombre", $backend->nombre);
$smarty->assign("apellido", $backend->apellido);
//mostramos la plantilla
$smarty->display('index.tpl');
?>

index.tpl: por parte de la plantilla maquetada incorporamos lo siguiente:

{include file=header.tpl title=$title}
<div class="content">
<p>Hola mundo!</p>
<p>Mi nombre es: {$nombre}.</p>
<p>Mi apellido es : {$apellido}.</p>
</div>
{include file=footer.tpl}

Conclusiones:

Aunque smarty nos permite incluir código de PHP en nuestra plantilla, esta practica no se aconseja. Una buena practica de programación consiste en enviar variables sin ningún contenido html para que la plantilla la trate correctamente. Como hemos visto en el ejemplo, podemos incluir plantillas dentro de plantillas.

Esto resulta beneficioso para optimizar aun mas la plantilla y reutilizar el código, incluyendo porciones de plantillas en varios archivos.

Smarty es una gran solución como motor de plantillas en nuestros proyectos.

En próximos artículos entraremos en mas detalle y como podemos explotar Smarty mucho mas a fondo.

Web oficial de smarty: http://www.smarty.net/




No hay comentarios:

Publicar un comentario