(PHP 4, PHP 5)
eval — Evaluar una cadena como código PHP
Evalúa la cadena dada en cadena_codigo como código PHP. Entre otras cosas, esto puede ser útil para almacenar código en un campo de texto en una base de datos para su ejecución posterior.
Existen algunos factores a tener en cuenta cuando se usa eval(). Recuerde que la cadena pasada debe ser código PHP válido, incluyendo cosas como la terminación de sentencias con un punto-y-coma de modo que el intérprete no falle en la línea siguiente al llamado a eval(), y escapar apropiadamente las cosas en cadena_codigo . Para mezclar salida HTML y código PHP, es posible usar una etiqueta de cierre PHP para abandonar el modo PHP.
Recuerde también que las variables que reciben valores bajo eval() conservarán esos valores en el script principal más adelante.
La cadena de código a ser evaluada. cadena_codigo no necesita contener etiquetas de Apertura PHP.
Una sentencia return terminará inmediatemente la evaluación de la cadena.
A partir de PHP 4, eval() devuelve NULL a menos que se llame return en el código evaluado, en cuyo caso el valor pasado a return es devuelto. Si ocurre un error de análisis sintáctico en el código evaluado, eval() devuelve FALSE y la ejecución del código subsiguiente continúa normalmente. No es posible atrapar un error de análisis sintáctico en eval() usando set_error_handler().
Example#1 Ejemplo de eval() - unión de texto simple
<?php
$cadena = 'taza';
$nombre = 'café';
$cad = 'Esta es una $cadena con mi $nombre en ella.';
echo $cad. "\n";
eval("\$cad = \"$cad\";");
echo $cad. "\n";
?>
El resultado del ejemplo seria:
Esta es una $cadena con mi $nombre en ella. Esta es una taza con mi café en ella.
Note: Puesto que esto es una construcción del lenguaje y no una función, no puede ser llamado usando funciones variables
Como con todo lo que presenta un resultado directamente en el navegador, se pueden utilizar las funciones de control de salida para capturar el resultado de esta función y grabarlo - por ejemplo - en una string.
Note: En caso de un error fatal en el código evaluado, el script completo finaliza.