- Bitacora de guebs - hosting, alojamiento web, hospedaje web y dominios - http://bitacora.guebs.com -

Interprete de plantillas sencillo y rápido con PHP

Publicado por webmaster el día 28/10/2005 en PHP

A medida que uno va creando aplicaciones PHP se va dando cuenta de la conveniencia de diferenciar la lógica del programa del aspecto visual del mismo, es decir, mantener separados el código PHP del programa del código XHTML/HTML que define su aspecto visual.

Hay varios formas y niveles de separar el código PHP del XHTML, pero la más conveniente es aquella que permite la separación completa, es decir, aquella en la que el diseño es totalmente independiente del código de la aplicación. La forma de lograr esto es mediante el uso de lo que, en ingles, se suele denominar “Template engine”, es decir, “Interprete de plantilla”. Gracias a estos “Templante engines”, la lógica de la aplicación se define en el código PHP, creada y mantenida por los programadores, mientras que el aspecto visual se define en plantillas, creadas y mantenidas por un diseñador, alguien que no necesariamente sabe programar.

En el mundo de PHP, el “Template engine” más conocido, más potente y el que ofrece mayor flexibilidad es Smarty. Smarty permite la separación completa entre el código de la aplicación y su aspecto, definido mediante plantillas que permiten el uso de etiquetas y funciones especiales asignados desde el código PHP.

Smarty es genial, pero en muchos casos, resulta excesivamente complejo y lento. Recientemente, hemos tenido que crear una aplicación para el envio de boletines electrónicos mediante email en donde cada email debe ser personalizado con los datos del destinatario. Al principio, pensamos utilizar Smarty para personalizar los email a partir de una plantilla previamente definida, ya que su capacidad de precompilar las plantillas permitiría disminuir el tiempo necesario para interpretarlas. Al final no conseguimos que funcionara como queríamos y terminamos creando nuestro propio “Interprete de plantillas” que te presentamos a conitnuación:

Nuestro interprete de plantillas

El código superior es el código completo de nuestro “Interprete de plantillas”, guardalo en un archivo llamado “plantilla.class.php”.

Ejemplo con una sola variable

La utilización más simple de nuestro interprete de plantillas es aquel en el que asignas una sola variable a la plantilla, lo puedes ver a continuación:

Guarda este código en archivo llamado “ejemplo1.php” ubicado en el mismo directorio que “plantilla.class.php” y ejecutalo. Su resultado debería ser algo así:

Ejemplo con array

Otra posibilidad es asignar a la plantilla un array con valores en vez de una simple variable, un ejemplo de ello lo tienes a continuación:

Si guardas y ejecutas este código de la misma forma que con el ejemplo anterior, el resultado sería:

Ejemplo con un bucle

Supongamos que queremos hacer un listado de los estudiantes de una escuela, en este ejemplo te muestro como debería hacerse:

Si guardas y ejecutas este código de la misma forma que con el ejemplo anterior, el resultado sería:

Ejemplo con inclusión de código PHP en plantilla

A veces es conveniente incluir en la plantilla algo de código PHP, en este ejemplo te mostramos como hacerlo:

Si guardas y ejecutas este código de la misma forma que con en los ejemplos anteriores, el resultado será el mismo que en el primer ejemplo:

Ejemplo con plantillas reales

Para terminar, un ejemplo en el cual el código HTML que vamos a interpretar está guardado en un archivo. Esta es la forma de almacenaminiento más habitual de las plantillas, aunque también se puede almacernar en una base de datos, etc.

Empezemos, para ponerlo más interesante vamos a usar 3 plantillas: la plantilla en sí, su cabecera y su pie de página. Llamemos a la primera “plantilla.tpl”, y “cabera.tpl” y “pie.tpl” a las otras dos.

Guardar el siguiente código en el archivo “cabecera.tpl”:

El siguiente código guardalos como “plantilla.tpl”:

Y, por último, guarda este código en “pie.tpl”:

Ahora, guarda el siguiente código en un archivo llamado “ejemplo_con_archivos.php”:

Como verás es prácticamente igual a nuestro primer ejemplo, pero hay dos diferencias:

  1. La primera diferencia es que esta vez, como la plantilla está almacenado en un archivo no es necesario definir la variable $codigo que hasta ahora habíamos venido utilizando.
  2. La segunda diferencia está en la forma que llamamos a la función de nuestro interprete que se encarga de interpretar las plantillas, $this->parse(). Esta vez, no le pasamos el código de la plantilla sino la ubicación del archivo y además, le pasamos otro argumentos con valor “true” que indica que le estamos pasando la ubicacion del archivo y no su contenido.

Además, como la plantilla “plantilla.tpl” insertaba otroas dos plantillas, el resultado final de la ejecución de este código será:


Artículo procedente de Bitacora de guebs - hosting, alojamiento web, hospedaje web y dominios: http://bitacora.guebs.com

Dirección del artículo: http://bitacora.guebs.com/articulo/55/interprete-plantillas-sencillo-y-rapido-con-php/

Imprimir artículo.