eval

(PHP 4, PHP 5, PHP 7, PHP 8)

evalAvalia uma string como código PHP

Descrição

eval(string $code): mixed

Avalia a string fornecida no parâmetro code como um código PHP.

O código a ser avaliado herda o escopo de variáveis da linha na qual a chamada a eval() ocorrer. Todas as variáveis disponíveis naquela linha estarão disponíveis para leitura e modificação no código avaliado. Entretanto, todas as funções e classes definidas serão definidas no espaço de nomes global. Em outras palavras, o compilador considera o código avaliado como se ele fosse um arquivo incluído separadamente.

Caution

A construção de linguagem eval() é bastante perigosa porque permite execução de código PHP arbitrário. Seu uso é contudo desencorajado. Se foi cuidadosamente verificado que não há outra opção a não ser usar esta construção, deve-se prestar atenção especial para não passar nenhum dado fornecido pelo usuário no parâmetro sem antes validá-lo.

Parâmetros

code

Código PHP válido a ser avaliado.

O código não pode ser envolvido em etiquetas PHP de abertura e de fechamento, isto é, 'echo "Hi!";' deve ser passado ao invés de '<?php echo "Hi!"; ?>'. Ainda é possível sair e re-entrar no modo PGP usando-se os marcadores apropriados, ex.: 'echo "In PHP mode!"; ?>In HTML mode!<?php echo "Back in PHP mode!";'.

Além disso, o código informado deve ser código PHP válido. Isto inclui o fato de que todas as instruções devem ser adequadamente terminadas com ponto-e-vírgula. 'echo "Hi!"' por exemplo causará um erro de avaliação, enquanto que 'echo "Hi!";' funcionará.

Uma instrução return irá terminar imediatamente a avaliação do código.

o código será executado no escopo do código que está chamando eval(). Todas as variáveis definidas ou alteradas na chamada a eval() permanecerão visíveis depois que ela terminar.

Valor Retornado

eval() retorna null a menos que return seja chamado no código avaliado, neste caso o valor passado a return será o retornado. A partir do PHP 7, se houver um erro de avaliação no código, eval() lança uma exceção ParseError. Antes do PHP 7, neste caso eval() retornava false e a execução do código seguinte continuava normalmente. Não é possível capturar um erro de avaliação em eval() usando set_error_handler().

Exemplos

Example #1 Exemplo de eval() example - fusão simples de texto

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

O exemplo acima produzirá:

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

Notas

Note: Como esta é uma construção da linguagem e não uma função, ela não pode ser chamada usando funções variáveis ou argumentos nomeados.

Tip

Assim como qualquer coisa que envia seu resultado diretamente para o navegador, as funções de controle de saída podem ser usadas para capturar a saída desta função e salvá-la em uma string, por exemplo.

Note:

Em caso de erro fatal no código avaliado, todo o script é terminado.

Veja Também

  • call_user_func() - Chama a função de retorno informada no primeiro parâmetro