Php’de değişken fonksiyonları yaratmak

Yazan: cappytoi | Tarih 1 Ekim 2007 | Yorum  5 Yorum
BerbatKötüOrtaGüzelHarika 3 kez puan verildi, Ortalama: 4 (5 üzerinden)
Loading ... Loading ...

Bugünde basit ama yararlı bir konu ele alalım. Php 'de 4.0.1 'den sonra değişkenlere atayabiliyorsunuz. Bu işlem için create_function() fonksiyonunu kullanabilirsiniz. Basit bir örnekle başlayalım:

PHP:
  1. $carpim_yazdir = create_function('$x,$y','echo $x * $y;');
  2. $carpim_yazdir(5,2);

create_function eval 'e benzetebilirsiniz. Yanlız unutmayın create_function bir fonksiyonken eval bir dil yapısıdır. Belki create_function ile neler yapabileceğinizi gözünüzde canlandıramadıysanız daha komplek bir örnek vereyim.

PHP:
  1. $arama = create_function('$anahtar,$array,&$bul','global $bul; foreach ($array as $key => $value) { if (str_pos($value,$anahtar)!==false) $bul[] = $value; }');
  2. $ara = array ( 'Php güzel bir dildir.',
  3.                     'Php ile hayatınızı kolaylaştırın.',
  4.                     'Asp nedir bizi ilgilendirmez.',
  5.                     'Ama perli de severiz.' );
  6.  
  7. function bul_yazdir($ara,$anahtar,$arama_fonksiyonu) {
  8.        $bul = array();
  9.        $arama_fonksiyonu($anahtar,$ara,$bul);
  10.        foreach ($bul as $value) {
  11.            echo '- '.$value.'<br />';
  12.        }
  13. }
  14.  
  15. bul_yazdir($ara,'Php',$arama);

Burda basit bir arama fonksiyonu yazdım, altına da basit normal bir koydum ki farkı görün. Değişken fonksiyonların iyi tarafı bu fonksiyonları serialize edip oturumda veya bir dosyada saklayabilir ve daha sonra tekrar kullanabilirsiniz. Bir diğer kullanımı da callback (geri çağırım) fonksiyonları ile kullanmaktır. Buna da bir örnek verelim çünkü bu kullanım çok önemlidir. Yukarıdaki betiğin callback ile yazılmış halini aşağıda görelim:

PHP:
  1. $anahtar = 'Php';
  2. $ara = array ( 'Php güzel bir dildir.',
  3.                     'Php ile hayatınızı kolaylaştırın.',
  4.                     'Asp nedir bizi ilgilendirmez.',
  5.                     'Ama perli de severiz.' );
  6. $bul = array();
  7. $arama = create_function('&$deger,$indeks', 'global $anahtar; if (strpos($deger,$anahtar)) {global $bul; $bul[] = $deger; }');
  8. $ara_ve_yazdir = create_function('&$deger,$indeks', 'global $anahtar; if (strpos($deger,$anahtar)) echo $deger.'<br />'; ');
  9. array_walk($ara, $arama);
  10. echo '<pre>',print_r($bul,true),'

Kafanızda ampüllerin yandığını düşünerek bu konuyu burada noktalıyorum. Değişik örnekler aklınıza gelirse bu konunun altına yorum olarak ekleyebilirsiniz.

Yazdır Yazdır | 774 Görüntülenme | Kategori: PHP | Trackback  Geri İzleme
Etiketler  Etiketler: , , , ,

Benzer Yazılar


Yorum Yap


(gerekli)

(gerekli,yayınlanmaz)




XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>