En el post anterior hablé sobre los sistemas de templates y en especial de Smarty, la idea general es que no hace falta aprender un nuevo lenguaje de programación intermedio para las plantillas sino que con PHP puro es suficiente.

Yo considero que lo más importante es ser ordenado y de esta forma podemos separar la lógica de la programación del diseño.

Usando Savant 3

Lo que me gusta de este sistema de templates es que tiene las ventajas de Smarty sin sus problemas, en primer lugar nos ofrece las ventajas del uso de cache y sobre todo no exige que aprendamos un nuevo lenguaje de programación sino que usa nuestro PHP de siempre para mantener el esquema de programación MVC, lo pueden bajar AQUI

Uso de clases

Como dije antes ser ordenado permite separar la lógica de la programación del diseño, esto sumado al uso de clases y web modular. Veamos un ejemplo primero de lo que NO debemos hacer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$link = mysql_connect("localhost", "nobody"odigo">$link = mysql_connect("localhost", "nobody");
mysql_select_db("
mydb", $link);
$result = mysql_query("
SELECT nombre, email FROM agenda", $link);
echo "
<table border = '1'> \n";
echo "
<tr> \n";
echo "
<td><b>Nombre</b></td> \n";
echo "
<td><b>E-Mail</b></td> \n";
echo "
</tr> \n";
while ($row = mysql_fetch_row($result)){
echo "
<tr> \n";
echo "
<td>$row[0]</td> \n";
echo "
<td>$row[1]</td> \n";
echo "
</tr> \n";
}
echo "
</table> \n";
?>

Ese desastre esta bien como ejemplo o cuando recién empezamos con PHP, esa ensalada de código no le sirve de nada al diseñador, veamos como sería eso mismo pero separando la lógica del diseño:

1
2
3
4
5
6
7
8
9
10
11
12
<?php query_posts($query_string); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post">
<h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<div class="entry">
   <?php the_content(); ?>
</div>
<p class="postmetadata">Posted in <?php the_category(', '); ?></p>
</div>
<?php endwhile; else: ?>
<p>Sorry, no posts matched your criteria.</p>
<?php endif; ?>

En este caso copiado de WordPress, que para mi es uno de los mejores en lo que refiere al uso de MVC, si abrimos el archivo usando Dreamweaver, el diseñador podrá editarlo sin problemas basta que respete la ubicacion de las condiciones if y el bucle while (tal como ocurriría con Smarty pero sin sus complicaciones).

La conexión de base de datos se coloca en un archivo config.inc.php por ejemplo, y el manejo de la conexión en si se hace mediante una clase destinada a dicho fin, también es posible mediante clases separarlo en una cabecera PHP con la creación del objeto y luego el código html:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
///// no tocar /////
$noticia = new noticia();
if ($noticia->cuantos<=0) {
///// no tocar /////
?>
   <p><b>No se encontraron noticias</b></p>
<?php } else { for ($i=0; $i<$noticia->cuantos; $i++) { ?>
   <h2><?=$noticia->titulo?></h2>
   <p><span class="fecha"><?=$noticia->fecha?></span></p>
   <p><?=$noticia->texto?></p>
<?php } ?>

Con dejarle algunas indicaciones al diseñador que no debe tocar ciertas líneas, además de usar nombres muy claros para nuestra variables (titulo, fecha, texto, etc) le damos suficiente ayuda para que sepa que parte tocar y como organizarlo.