Documentación offline PHP master

eval

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

eval

Ejecuta una cadena como un script PHP

Descripción#

eval(string $code): mixed
```php

Evalúa el `code` proporcionado como código PHP.

El código en evaluación hereda el [ámbito de las variables](#language.variables.scope) de la línea en la que se realiza la llamada a `eval`. Todas las variables disponibles en esa línea serán accesibles en lectura y modificación en el código evaluado. Sin embargo, todas las funciones y clases definidas se definirán en el espacio de nombres global. En otras palabras, el compilador considera el código evaluado como si se tratara de un [archivo incluido](#function.include) separado.

> [!CAUTION]
> La construcción de lenguaje `eval` es *muy peligrosa* ya que permite la ejecución de código PHP arbitrario. *Su uso se desaconseja encarecidamente.* Si se ha verificado cuidadosamente que no hay otras opciones que utilizarla, se debe prestar una atención especial *a no pasar datos provenientes de un usuario* sin haberlos validado previamente de manera minuciosa.

## Parámetros

`code`  
Código PHP válido a evaluar.

El código no debe estar rodeado de [etiquetas PHP](#language.basic-syntax.phpmode) de apertura y cierre, es decir, `'echo "Hi!";'` debe ser pasado en lugar de `'<?php echo "Hi!"; >'`. Siempre es posible salir y volver al modo PHP utilizando las etiquetas PHP apropiadas, es decir, `'echo "En modo PHP !"; ?>En modo HTML !<?php echo "Retorno al modo PHP !";'`.

Además de esto, el código PHP pasado debe ser válido. Esto incluye que todas las instrucciones deben terminar con un punto y coma. `'echo "Hi!"'` por ejemplo resultará en un error fatal, mientras que `'echo "Hi!";'` funcionará.

Una instrucción `return` terminará inmediatamente la evaluación del código.

El código se ejecutará en el ámbito del código que llama a la función `eval`. Por lo tanto, todas las variables definidas o modificadas en la llamada a la función `eval` seguirán siendo visibles después de la finalización de la ejecución de la función.

## Valores devueltos

`eval` devuelve `null` a menos que `return` sea llamado en el código evaluado, en cuyo caso el valor pasado a `return` es devuelto. A partir de PHP 7, si hay un error de sintaxis en el código evaluado, `eval` lanza una excepción `ParseError`. Antes de PHP 7, en este caso `eval` devuelve `false` y la ejecución del código siguiente continúa normalmente. No es posible capturar el error de análisis de la función `eval` utilizando la función `set_error_handler`.

## Ejemplos

Ejemplo con `eval` - concatenación de texto
'; echo $str; eval( "\$str = \"$str\";" ); echo $str; ?>

```php

El ejemplo anterior mostrará:

Esto es un $string con mi $name dentro.
Esto es una taza con mi café dentro.

Notas#

[!NOTE] Como esto es una estructura del lenguaje, y no una función, no es posible llamarla con las funciones variables o argumentos nombrados.

[!TIP] Al igual que con cualquier cosa que envíe sus resultados directamente al navegador, las funciones de control de salida se pueden usar para capturar la salida de esta función y guardarla en un string (por ejemplo).

[!NOTE] En caso de un error fatal en el código evaluado, todo el script se terminará.

Véase también#

call_user_func