Programación con PHP 5 – 2.7.3.2 eval()

2.7.3.2 eval()
Es similar a include, pero en vez de compilar y ejecutar el script que viene desde un archivo lo toma como un string (sea con comillas dobles o simples o una variable).
Se usa cuando se obtiene código de un origen de datos externo como una base de datos.
Es menos eficiente que escribir el código directamente

Hay algunos aspectos a tener en cuenta cuando se utiliza eval(). Recuerde que la cadena de carácteres pasada debe ser código PHP válido, incluyendo aspectos como sentencias de terminación con un punto y coma para que el parser no finalice en la línea después de eval(), y secuencias de formato correctas en la cadena de entrada.
Recuerde también que las variables a las que se les da valor en eval() retendrán estos valores posteriormente en el script principal.

<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.<br>';
echo $str;
eval( "$str = "$str";" );
echo $str;
?>

Mostrará la salida :

This is a $string with my $name in it.
This is a cup with my coffee in it.

Si la cadena pasada a eval es delimitada por comillas simples esta sólo incluirá los valores inmediatos de las variables embebidas.

eval('$str2 = $str;');
echo $str2;

Como en el ejemplo la cadena enviada a eval esta delimitada por comillas dobles estas por si mismas procesan cualquier variable embebida que contengan aunque esta sea delimitada por comillas simples.
En la cadena se usa el caracter de escape $ para enviar un $ a eval, luego se usan los ” para delimitar la cadena a asignar a $str con lo que la sentencia quedará así :

$str = "This is a $string with my $name in it";

Adicionalmente la funcion eval incluirá los valores inmediatos de las variables embebidas.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s