Disculpen la tardanza, vaya lío.
La verdad no dejo de ver eval() como una solución anticuada, y hasta mal aplicada por ahora.
Se por experiencia que hay casos en los que puede ser necesario, pero solo en casos muy extremos, y casi imposibles de reproducir.
Esa es una de las razones principales de usar eval() para un sistema de plantillas, no sabes cuando algo puede fallar o estar mal escrito, porque incluso:
- Un error generado por mala sintaxis en eval() simplemente no te da la precisión que cualquier otro error si
- No ayuda a escribir código pues los resaltadores de sintaxis no funcionan
- El código resultante de las plantillas resulta complicado de leer
- etc...
Usando include:
Código PHP:
$foo = 'x';
$bar = 'D';
ob_start();
include 'plantilla.php';
$candy = ob_get_contents();
ob_end_clean();
echo $candy; // xD
plantilla.php
Código PHP:
<?php echo $foo; ?><?php echo $bar; ?>
Ese es el concepto mas primitivo y básico de un sistema de plantillas basado en include, y bueno, con ciertos añadidos para poder capturar dicho contenido en una variable.
Sigo sin entender, y ahora lo veo mas claro, cual es la necesidad explicita de usar eval() en lugar de otras técnicas.
A pesar del riesgo, ¿cual es la ventaja?
Si es por mera curiosidad la perdida de tiempo que esto implica.