Fundamentos de Smarty
Naturaleza de Smarty
Smarty es un motor de plantillas para PHP que separa la lógica de negocio de la presentación visual. Utiliza etiquetas especiales dentro de archivos HTML para insertar contenido dinámico, permitiendo que diseñadores modifiquen interfaces sin alterar código PHP.
Ventajas Clave
- Separación clara entre capas lógicas y de presentación
- Sintaxis simplificada para equipos de frontend
- Mecanismos de caché integrados para optimización
- Herramientas avanzdaas como herencia de plantillas
Configuración Inicial
Instalación mediante Composer
composer require smarty/smarty
Estructura de Directorios
$motor = new Smarty();
$motor->setTemplateDir('vistas/');
$motor->setCompileDir('cache/compilados/');
$motor->setCacheDir('cache/salida/');
Sintaxis Esencial
Variables y Salida
// Asignación en PHP
$motor->assign('encabezado', 'Panel de Control');
<!-- Plantilla Smarty -->
<h1>{$encabezado}</h1>
Estructuras de Control
{if $sesion_activa}
<span>Bienvenido</span>
{else}
<a href="/ingreso">Autenticarse</a>
{/if}
{foreach $articulos as $publicacion}
<div>{$publicacion.titulo}</div>
{/foreach}
Funcionalidades Avanzadas
Composición Modular
{include file="cabecera.tpl"}
{block name="principal"}
<section>Contenido por defecto</section>
{/block}
{include file="pie.tpl"}
Herencia de Plantillas
{extends file="base.tpl"}
{block name="principal"}
<article>Contenido específico</article>
{/block}
Gestión de Caché
Configuración
$motor->caching = Smarty::CACHING_LIFETIME_SAVED;
$motor->cache_lifetime = 1800; // 30 minutos
Limpieza Selectiva
// Eliminar caché específico
$motor->clearCache('productos.tpl');
// Limpiar caché completo
$motor->clearAllCache();
Casos de Implementación
Flujo de Aplicación
// Controlador
$datos = ['usuarios' => obtenerUsuarios()];
$motor->assign('datos', $datos);
$motor->display('lista_usuarios.tpl');
Estructura de Proyecto
proyecto/
├── controladores/
├── modelos/
└── vistas/
├── parciales/
│ ├── cabecera.tpl
│ └── pie.tpl
└── paginas/
└── perfil.tpl
Análisis Comparativo
Smarty vs Twig
| Característica | Smarty | Twig |
|---|---|---|
| Sintaxis | Estilo tradicional | Más moderno |
| Seguriadd | Requiere configuración | Auto-escape por defecto |
Solución de Problemas
Depuración
{debug}
Protección Contra XSS
{$entrada_usuario|escape:'html'}