(PHP 4, PHP 5)
eval — Bir dizgeyi bir PHP kodu olarak yorumlar
kod_dizgesi
ile belirtilen dizgeyi bir PHP kodu
olarak yorumlar. Kodları diğer her şeyin yanında, veritabanının bir metin
alanında tutmak ve bu kodları gerektiğinde çalıştırmak için çok
kullanışlıdır.
eval() işlevini kullanırken hatırda tutulması gereken
bazı durumlar vardır: Aktarılan dizgenin PHP kodu olarak geçerli olması
gerekir; deyimleri sonlandıran noktalı virgüller bu dahildir, yoksa
eval() işlevinden sonraki satırda yorumlayıcı devreden
çıkmaz. Ayrıca, kod_dizgesi
içindeki öncelemlerin
düzgün bir biçimde yapılmış olması gerekir. HTML ve PHP kodlarını karışık
kullanmak isterseniz PHP kipinden çıkmak için PHP'nin kapama etiketini
kullanabilirsiniz.
Ayrıca, eval() altında kullanılan değişkenlerin değerleriyle birlikte ana betikte geçerli kalacağını aklınızdan çıkarmayın.
kod_dizgesi
Yorumlanacak PHP kodlarını içeren dizge.
kod_dizgesi
PHP açılış etiketlerini
içermemelidir.
Dizge içindeki bir return deyimi dizgenin yorumlanmasını, anında durdurur.
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() FALSE
döndürür
ve çalışma dosyadaki sonraki deyimden normal olarak devam eder.
eval() işlevinin yorumladığı kodlardaki bir hatayı
set_error_handler() kullanarak döndürmek mümkün değildir.
Örnek 1 - eval() örneği
<?php
$dizge = 'Gülhane';
$isim = 'çınar';
$metin = 'Burası $dizge parkı ve ben bir $isim ağacıyım.';
echo $metin. "\n";
eval("\$metin = \"$metin\";");
echo $metin. "\n";
?>
Yukarıdaki örneğin çıktısı:
Burası $dizge parkı ve ben bir $isim ağacıyım. Burası Gülhane parkı ve ben bir çınar ağacıyım.
Bilginize: Bu bir işlev değil, dil oluşumu olduğundan değişken işlevler kullanılarak çağrılamaz.
Sonuçlarını doğrudan tarayıcıya çıktılayan her şey gibi, çıktı denetleme işlevleri bu işlevin de çıktısını yakalamak ve (örneğin) string türünde saklamak için kullanılabilir.
Bilginize:
Yorumlanan kodda ölümcül bir hata varsa betiğin tamamı durdurulur.