evalWertet eine Zeichenkette als PHP-Code aus
&reftitle.description;
mixedevalstringcode
Wertet die in code enthaltene Zeichenkette als
PHP aus.
Der ausgewertete Code erbt den
Geltungsbereich der Variablen
von der Zeile, in der die Funktion eval aufgerufen
wird. Alle Variablen, die in dieser Zeile verfügbar sind, können im
ausgewerteten Code gelesen und verändert werden. Alle definierten Funktionen
und Klassen werden jedoch im globalen Namensraum definiert. Mit anderen
Worten, der Compiler betrachtet den ausgewerteten Code so, als wäre er eine
separate eingebundene Datei.
Das eval-Sprachkonstrukt ist
sehr gefährlich, weil es die Ausführung von beliebigem
PHP-Code erlaubt.
Seine Verwendung wird daher nicht empfohlen.
Wenn sorgfältig überprüft wurde, dass es keine andere Möglichkeit gibt als
dieses Konstrukt zu verwenden, ist besonders darauf zu achten
keine von Nutzern bereit gestellten Daten zu übergeben
ohne diese zuvor ordnungsgemäß zu validieren.
&reftitle.parameters;
code
Gültiger PHP-Code, der ausgewertet werden soll.
Der Code darf nicht in öffnende und schließende
PHP-Tags
eingeschlossen sein, &dh; 'echo "Hi!";' muss anstelle
von '<?php echo "Hi!"; ?>' übergeben werden.
Es ist dennoch möglich den PHP-Modus durch die entsprechenden PHP-Tags zu
verlassen und wieder zu betreten, &zb;
'echo "Im PHP-Modus!"; ?>Im HTML-Modus!<?php echo "Wieder im PHP-Modus!";'.
Abgesehen davon muss der übergebene Code gültiges PHP sein. Das
beinhaltet, dass alle Anweisungen ordnungsgemäß mit einem Strichpunkt
terminiert sein müssen. 'echo "Hi!"', zum Beispiel,
verursacht einen Parse-Fehler, wohingegen
'echo "Hi!";' funktioniert.
Eine return-Anweisung beendet die Auswertung des
Codes sofort.
Der Code wird im Geltungsbereich des eval
aufrufenden Codes ausgeführt. Daher bleiben sämtliche Variablen, die im
eval Aufruf definiert oder geändert werden, nach
dessen Ende sichtbar.
&reftitle.returnvalues;
eval gibt &null; zurück, außer wenn im
ausgewerteten Code return aufgerufen wird, dann aber
wird der an return übergebene Wert zurückgegeben.
Von PHP 7 an, wird eval im Falle eines Parse Errors im
ausgewerteten Code eine ParseError-Exception werfen.
Vor PHP 7 gab eval in diesem Fall &false; zurück und
der weitere Code wurde normal ausgeführt. Es ist in
eval nicht möglich, einen Parse Error mittels
set_error_handler abzufangen.
&reftitle.examples;
eval-Beispiel (einfache Texteinfügung)
]]>
&example.outputs;
&reftitle.notes;
¬e.language-construct;
&tip.ob-capture;
Im Fall eines schweren Fehlers im augewerteten Code wird das komplette
Skript beendet.
&reftitle.seealso;
call_user_func