Antes que me lluevan las críticas por lo que voy a escribir en este post, quiero primero aclarar que estoy de acuerdo en el uso de MVC (modelo-vista-controlador) en lo que no creo es que Smarty sea la solución, ya iré desarollando la idea de a pocos.

¿Qué es una plantilla/template PHP?

Las plantillas son páginas web que muestra código PHP y que «supuestamente» pueden ser editadas por cualquier persona sin tener conocimientos de programación, por lo que serían adecuadas para diseñadores y maquetadores de páginas web. Usualmente tienen extensión .TPL

Quiero indicar que en Internet encontramos muchos sistemas que dicen ser plantillas pero que en realidad no pasan de ser simples reemplazadores de variables y aunque esto no sea exactamente una plantilla la verdad es que en sistemas simples cumplen de sobra con su cometido, por ejemplo pueden ver ESTE

¿Qué es Smarty?

Si te han dado curiosidad los sistemas de plantillas en PHP es seguro que te debes haber cruzado con explicaciones sobre Smarty que es el sistema de plantillas oficial para PHP, y además estoy seguro que habrás leído comentarios sobre lo muy rápido, eficiente y simple de implementar que es, la verdad es que para cosas simples puede parecer que si, pero ya luego te darás cuenta que no es la maravilla que te cuentan.

¿Por qué no es buena idea usar Smarty?

Los argumentos a favor los encuentras rondando por google asi que yo me dedicaré a analizar que tan ciertos son:

Separa la lógica de la presentación

Eso no es del todo cierto, ya que Smarty es todo un lenguaje de programación, veamos algunas de las supuestas ayudas que da Smarty para los diseñadores y vamos con los ejemplos para visualizar esto:
Con Smarty:

1
2
3
4
5
<table>
   <tr>
      <td>{$mivariable}</td>
   </tr>
</table>

Ahora veamos lo tremendamente dificil que es hacerlo sin Smarty

1
2
3
4
5
<table>
   <tr>
      <td><?=$mivariable?></td>
   </tr>
</table>

Seguro que algunos escépticos me dirán que en algo tan simple es lo mismo pero que en programación da muchas facilidades para los diseñadores, veamos si eso es cierto
Condiciones usando Smarty:

1
2
3
4
5
6
7
{if $name eq "Fred"}
    Welcome Sir.
{elseif $name eq "Wilma"}
    Welcome Ma'am.
{else}
    Welcome, whatever you are.
{/if}

Veamos lo complicadísimo que es hacer lo mismo usando PHP

1
2
3
4
5
6
7
<?php if ($name == "Fred"):?>
    Welcome Sir.
<?php elseif($name == "Wilma"): ?>
    Welcome Ma'am.
<?php else: ?>
    Welcome, whatever you are.
<?php endif; ?>

¿Alguién notó lo mucho que se simplificó para el diseñador? Al menos yo no, además de cambiar mis invocaciones PHP por llaves y encima complicarme con algo llamado eq cuando yo ya tenía mi archiconocido ==

Smarty es más veloz

Tal vez sea más veloz que otro sistema de plantillas sin compilar ni optimizar pero nunca más veloz que usar puro PHP como hice en los ejemplos anteriores, sumado a esto es mucho más pesado, o creen que esas miles de líneas de código que forman Smarty no van a consumir procesos en tu servidor.

Smarty incorpora una sistema de patrones de sintáxis

Eso en castellano significa que dentro de la plantilla podamos incluir manejo y manipulación de variables; es decir dentro de una plantilla de Smarty puede hacerse programación. Me parece o al inicio dijimos que el objetivo de usar plantillas es para no mezclar la programación con el diseño, si eso es cierto como se nos va a ocurrir meter programación ahi, eso desnaturaliza su uso y encima vamos a decir que eso es una ventaja….

Por esas razones considero que Smarty es mala idea ya que nos obliga a aprender un lenguaje de programación intemedio entre diseño y programación que quitará rendimiento a nuestra aplicación y al final no logra separar el diseño de la lógica.

En el próximo post indicaré cual es la solución para mi.