viernes, 16 de noviembre de 2007

Plantillas en PHP (I)

Tras siglos desde mi último post me he decidido a retomar mis escritos con otra serie dedicada a las plantillas. Este primer artículo lo dedicaré a dar una visión general sobre el tema, veremos porqué son útiles y en qué nos ayudan. En los post siguientes propondré una implementación propia de un sistema de plantillas.


Mucha gente, entre la que me incluyo, empezó a programar PHP como un lenguaje de scripting insertado dentro del código HTML. Resultaba muy intuitivo extender las funcionalidades de tu página incluyendo pequeños trozos de código PHP.

El problema surgió cuando a medida que añadimos más funcionalidades el código de nuestras páginas se convierte en El Laberinto del Minotauro. Encontrar y corregir errores tanto HTML/JavaScript como PHP se hace enormemente tedioso al tener todo el código mezclado. Este tipo de escritura de código es altamente interdependiente además de compartir lógica y presentación la mismas variables.
Esta situación es mala de cara a la gestión de errores, mala frente a futuras modificaciones, mala porque no podemos aprovechar código de un proyecto a otro y mala porque no podemos dividir el trabajo entre diseñador y programador.

¿Como hacer código menos interdependiente?


Pensemos como sería una pagina HTML con el mínimo código PHP, para representar el típico resultado de una búsqueda en nuestra base de datos:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><?=$TITULO?></title>
</head>
<body>
<table>
<thead>
<tr><th>campo 1</th><th>campo 2</th></tr>
</thead>
<tbody>
<? foreach($DATOS AS $D): ?>
<tr><td><?=$D->CAMPO1?></td><td><?=$D->CAMPO2?></td></tr>
<? endforeach ?>
</tbody>
</table>
</body>
</html>


Primero, SÍ, utilizo short tags, para activarlas deberás editar tu php.ini poniendo short_open_tag=1. Pero, un momento, seguro que habréis visto en más de un sitio que no se deben utilizar las short tag que son la reencarnación del diablo y otras lindeces, veamos porqué:

  1. No se deben utilizar las short tags porque producen problemas si queremos hacer un include de un xml. Los archivos xml empiezan con <?xml y por lo tanto el PHP (con short tags activadas) interpreta que ahí empieza un bloque PHP. Esto se soluciona si en lugar de empezar de ese modo el xml lo empezamos así: <<? ?>?xml . ¿Supone esto un gran problema para no hacer uso de las short tags? Cada uno tendrá su opinión.

  2. No es raro hacer un include de un xml sobre todo si vamos a utilizar un sistema de plantillas basado en PHP, que en última instancia hará un include de la plantilla, y si ésta es un xml surgirá el problema.


A mi personalmente no me parece un gran problema si a cambio puedo utilizar <?= ?> que resulta un gran aliado para legibilidad de las plantillas, en todo caso cada uno es libre de utilizar <?php echo.

Dicho esto diré también que ya tenemos nuestra primera plantilla PHP. Metan ese código en un archivo, guárdenlo en UTF-8 y pónganle una extensión del tipo .phpt. A partir de ahora diferentes scripts podrán utilizar la misma plantilla o un mismo script utilizar plantillas diferentes. Además, se requieren unos mínimos conocimientos de PHP para hacer una plantilla por lo que fácilmente podrá hacerlas un diseñador mientras nosotros nos dedicamos a la miga de la aplicación y que se pelee él con el JavaScript, el DOM y las CSS (sí teneis la gran fortuna de tener un buen diseñador a mano).

Pero, ¿como instanciar esa plantilla y rellenar los huecos? paciencia, lo veremos en la próxima entrada.

No hay comentarios: