(PHP 4, PHP 5, PHP 7, PHP 8)
eval — Esegue una stringa come codice PHP
Esegue la data stringa code
come codice PHP.
eval() è un costrutto del linguaggio molto pericoloso perché permette l'esecuzione di codice PHP arbitrario. Il suo uso è pertanto sconsigliato. Se si è certi che non esistono altre soluzioni al posto di usare eval(), fare particolare attenzione a non inserire codice fornito dall'utente senza averlo preventivamente validato.
code
Codice PHP valido da eseguire.
Il codice non deve essere incluso nei tag
di apertura e chisura di PHP. Ad esempio
'echo "Ciao!";'
è corretto invece di
'<? echo "Ciao!"; >'
. È comunque possibile uscire e
rientrare nella modalità PHP attraverso l'utilizzo dei tag PHP appropriati, ad esempio:
'echo "In PHP mode!"; ?>In HTML mode!<? echo "Back in PHP mode!";'
.
Oltre a questo, valgono tutte le regole del codice PHP. Questo include l'inserimento al termine
di ogni istruzione del punto e virgola.
'echo "Ciao!"'
per esempio causerà un parse error, mentre
'echo "Ciao!";'
funzionerà.
Un'istruzione return
causa immediatamente la terminazione del codice
in corso di esecuzione dalla eval().
L'ambito di esecuzione è ristretto a dove eval() viene chiamata. Quindi qualsiasi variabile definita o modificata all'interno di eval() rimarrà visibile dopo la sua terminazione.
eval() ritorna null
a meno che
non venga richiamato return
nel codice da valutare, in tal caso
il valore passato a return
viene ritornato. Se avviene un
parse error nel codice valutato, eval() ritorna
false
e l'esecuzione del codice seguente continua normalmente. Non
è possibile catturare un parse error in eval()
usando set_error_handler().
Example #1 Esempio di eval() - semplice unione di testo
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
Il precedente esempio visualizzerà:
This is a $string with my $name in it. This is a cup with my coffee in it.
Nota: Poiché questo è un costrutto del linguaggio e non una funzione, non può essere chiamato con le variabili funzione
Come con qualsiasi cosa che invia il risultato direttamente al browser, è possibile utilizzare la funzione output-control per catturare l'uscita di questa funzione e salvarla - per esempio - in una stringa (per esempio).
Nota:
In caso di fatal error nel codice valutato, l'intero script termina.