evalExécute une chaîne comme un script PHP
&reftitle.description;
mixedevalstringcode
Évalue le code fourni comme étant du code PHP.
Le code en cours d'évaluation hérite de la
portée des variables
de la ligne sur laquelle l'appel à eval a lieu.
Toutes les variables disponibles à cette ligne seront accessibles en lecture et
modification dans le code évalué.
Cependant, toutes les fonctions et classes définies seront définies dans l'espace de noms global.
En d'autres termes, le compilateur considère le code évalué comme s'il s'agissait d'un
fichier inclus séparé.
La construction de langage eval est
très dangereuse car elle autorise l'exécution
de code PHP arbitraire. Son utilisation est vivement
déconseillée. Si on a soigneusement vérifié qu'il
n'y a pas d'autres options que de l'utiliser, gardez une attention
toute particulière à ne pas y passer de données provenant
d'un utilisateur sans les avoir précédemment validées
minutieusement.
&reftitle.parameters;
code
Code PHP valide à évaluer.
Le code ne doit pas être entouré de
balises PHP
ouvrante et fermante, c.-à-d. 'echo "Hi!";'
doit être passé au lieu de
'<?php echo "Hi!"; >'.
Il est toujours possible de quitter et de retourner en mode PHP
en utilisant les balises PHP appropriées, c.-à-d.
'echo "En mode PHP !"; ?>En mode HTML !<?php echo "Retour en mode PHP !";'.
Mis à part cela, le code PHP passé doit être valide. Ceci inclut que toutes les
instructions doivent se terminer par un point-virgule.
'echo "Hi!"' par exemple résultera en une erreur fatale, alors que
'echo "Hi!";' fonctionnera.
Une instruction return terminera immédiatement l'évaluation du code.
Le code sera exécuté dans le scope du code appelant la fonction
eval. Aussi, toutes les variables définies ou modifiées
dans l'appel à la fonction eval resteront visibles après
la fin de l'exécution de la fonction.
&reftitle.returnvalues;
eval retourne &null; sauf si
return est appelé dans le code évalué,
auquel cas la valeur passée à return
est retournée. À partir de PHP 7, s'il y a une erreur de syntaxe dans
le code évalué, eval lance une exception ParseError.
Avant PHP 7, dans ce cas eval retourne &false;
et l'exécution du code suivant continue normalement. Il
n'est pas possible d'attraper l'erreur d'analyse de la
fonction eval en utilisant la fonction
set_error_handler.
&reftitle.examples;
Exemple avec eval - concaténation de texte
';
echo $str;
eval( "\$str = \"$str\";" );
echo $str;
?>
]]>
&example.outputs;
&reftitle.notes;
¬e.language-construct;
&tip.ob-capture;
Dans le cas d'une erreur fatale dans le code évalué, l'ensemble du script se
terminera.
&reftitle.seealso;
call_user_func