Ara
10

Php’de eval() fonksiyonun kullanımı

Yazar Enes Pekkaya    Kategori Php     Etiketler

Yeni bir site üzerinde çalışırken bazı sayfaların içerisine gömdüğüm php kodlarını çalıştırmam gerekti. Bunun için sevgili kardeşim Mustafa Yakut‘a ilgili soruyu yönelttim. Bana daha önce pek ismini duymadığım eval() fonksiyonu ile ilgili bir kod parçacığı gönderdi. Birazcık araştırma yaptıktan sonra tam benim istediğim fonksiyon olduğunu farkettim. Siteye entegre ettikten sonra sizlerde paylaşmak istedim.

Fonksiyon  sayesinde bir yazı dizisinin içine gömdüğüm php kodlarını okumasını sağladım. Aşağıda çok basit bir örnek ile açıklamaya çalışacağım.

İlk önce “default.php” adlı bir doysa oluşturup içeriği aşağıdaki gibidir.

<?php
echo 5+4;
?>

Sonra “deneme.php” adlı dosya oluşturup aşağıdaki kodu ekliyorum.

<?php
$code=file_get_contents("default.php");
$code = 'Paragrafın başlangıcı '. $code. ' buda son kısmı';
$code='?>' .trim($code) .'<?php;';
eval($code);
?>

Yukarıdaki kod öbeğini açıklamak gerekirse;
İlk önce “default.php” adlı dosyamın içindekileri okuyup “$code” isimli değişkene atıyorum. Sonra iki cümle arasına ekliyroum.  Sonraki adımda ise sanki require_once veya include gibi yapmak için $code değişkenin başına “?>” ve sonunada “<?php;” yazıyorum. Bu şekilde yazarak ilgili sözcük öbeğini daha hızlı okuyup çalıştırmasını sağlamaktır. En son adımda ise eval() fonksiyonu kullanılarak ilgili söz öbeğindeki php kodlarını çalıştırarak ekrana basmaktadır.

deneme.php ‘yi çalıştırdığınızda çıktı aşağıdaki gibi olacaktır;

Paragrafın başlangıcı 9 buda son kısmı

NOT : php 5.4.7 sürümü ile birlikte ” ‘?>’ .trim($code) .'<?php;’ ” yazdığınızda hata alacaksınız. Bunun yerine ” ‘?>’ .trim($code) ” şeklinde yazmanız daha sağlıklı olacaktır. Hem eski sürümlerde sorun olmayacaktır hem de yeni sürümlerde.

2 yorum bulunmaktadır - “Php’de eval() fonksiyonun kullanımı”

  • Mühendis 18 Aralık 2010, 21:25

    Değerli bilgiler için teşekkür ederim.

  • Yadigar 12 Mart 2011, 16:44

    Makale için teşekkürler… Fakat ufak bir noktayı belirtmek isterim. paylaşmış oldugunuz kodlar çalışır fakat yazınızın sonuna ‘ .trim($code) .” .trim($code) .'<?php ';

    '<?php ' etiketinde ; yok ve php yazısından sonra bir boşluk mevcutdur.

Yorum Yapın

 

Twitter'dan Takip Et! Twitter'dan Takip Et!

Etiketler

Son Yazılar

Son Yorumlar

Bağlantılar

Arşivler