evalBir dizgeyi bir PHP kodu olarak yorumlar
&reftitle.description;
mixedevalstringkod_dizgesikod_dizgesi ile belirtilen dizgeyi bir PHP kodu
olarak yorumlar.
Değerlendirilen kod, eval çağrısının gerçekleştiği
satırın değişken etki alanını
devralır. Bu satırda bulunan tüm değişkenler, değerlendirilen kodda
okunabilir ve değiştirilebilir. Ancak, tanımlanan tüm işlevler ve sınıflar
genel isim alanında tanımlanacaktır. Başka bir deyişle, derleyici
değerlendirilen kodu ayrı bir dahil edilen
dosyaymış gibi ele alır.
eval dil yapısı çok tehlikelidir çünkü keyfi PHP kodunun
çalıştırılmasına izin verir. Bu nedenle kullanımı önerilmez. Bu yapıyı
kullanmaktan başka bir seçeneğin olmadığına dikkatlice karar verilirse,
önceden düzgün bir şekilde doğrulamadan kullanıcı tarafından sağlanan
herhangi bir veriyi bu işleve aktarmamaya özellikle dikkat edilmelidir.
&reftitle.parameters;
kod_dizgesi
Yorumlanacak PHP kodlarını içeren dizge.
Dizge içindeki bir return deyimi dizgenin
yorumlanmasını, anında durdurur.
Kod, PHP açılış ve kapanış
PHP etiketleri ile
sarmalanmaMAlıdır, yani
'<?php echo "Merhaba!"; ?>' dizgesi yerine
'echo "Merhaba!";' dizgesi aktarılmalıdır. Uygun PHP
etiketlerini kullanarak PHP kipinden çıkmak ve yeniden girmek hala
mümkündür, örn. 'echo "PHP kipindeyiz!"; ?>HTML kipindeyiz!
<?php echo "Tekrar PHP kipindeyiz!";'.
Bunun dışında aktarılan kod geçerli PHP kodu olmalıdır. Bu, tüm
ifadelerin noktalı virgül kullanılarak uygun şekilde sonlandırılması
gerektiği anlamına gelir. Örneğin 'echo "Merhaba!"'
bir ayrıştırma hatasına sebep olurken,
'echo "Merhaba!";' çalışacaktır.
Bir return deyimi kodun yorumlanmasını derhal
sonlandıracaktır.
Kod, eval işlevini çağıran kodun etki alanında
çalıştırılacaktır. Bu nedenle eval çağrısında
tanımlanan veya değiştirilen tüm değişkenler, işlev sonlandırıldıktan
sonra görünür kalacaktır.
&reftitle.returnvalues;
Kod dizgesi içinde bir return bulunmadıkça
eval daima &null; döndürür. return
ile bir değer döndürülmesi durumunda bu değeri döndürür. Belirtilen dizgede
bir çözümleme hatası saptanırsa eval PHP 7 öncesinde
&false; döndürüp çalışma dosyadaki sonraki deyimden normal olarak devam
eder; PHP 7 ve sonrasında ise ParseError istisnası
oluşur. eval işlevinin yorumladığı kodlardaki bir
hatayı set_error_handler kullanarak döndürmek mümkün
değildir.
&reftitle.examples;
- eval örneği
]]>
&example.outputs;
&reftitle.notes;
¬e.language-construct;
&tip.ob-capture;
Yorumlanan kodda ölümcül bir hata varsa betiğin tamamı durdurulur.
&reftitle.seealso;
call_user_func