eval

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

evalExécute une chaîne comme un script PHP

Description

eval(string $code): mixed

Évalue le code fourni comme étant du code PHP.

Attention

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 vous avez 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.

Liste de paramètres

code

Code PHP valide à évaluer.

Le code ne doit pas être entouré de balises PHP ouvrante et fermante, i.e. '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, i.e. '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.

Valeurs de retour

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().

Exemples

Exemple #1 Exemple avec eval() - concaténation de texte

<?php
$string 
'tasse';
$name 'café';
$str 'Ceci est une $string avec mon $name dedans.<br />';
echo 
$str;
eval( 
"\$str = \"$str\";" );
echo 
$str;
?>

L'exemple ci-dessus va afficher :

Ceci est une $string avec mon $name dedans.
Ceci est une tasse avec mon café dedans.

Notes

Note: Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les fonctions variables ou arguments nommés.

Astuce

Comme pour toutes les fonctions qui affichent directement des résultats au navigateur, les fonctions de gestion des sorties peuvent être utilisées pour capturer la sortie de cette fonction et l'enregistrer dans une chaîne de caractères (par exemple).

Note:

Dans le cas d'une erreur fatale dans le code évalué, l'ensemble du script se terminera.

Voir aussi

  • call_user_func() - Appelle une fonction de rappel fournie par le premier argument