array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.eval.php', 1 => 'eval', ), 'up' => array ( 0 => 'ref.misc.php', 1 => 'Misc. Funções', ), 'prev' => array ( 0 => 'function.die.php', 1 => 'die', ), 'next' => array ( 0 => 'function.exit.php', 1 => 'exit', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/misc/functions/eval.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
eval — Avalia uma string como código PHP
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.
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.
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.
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().
Exemplo #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.
Nota: 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.
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.
Nota:
Em caso de erro fatal no código avaliado, todo o script é terminado.