Is_callable Kullanımı

Bir değişkenin içeriğinin bir işlev olarak çağrılabilirliğini sınar

Yöntem 1

<?php
function test(){}
$fonksiyon = 'test';
var_dump(is_callable($fonksiyon, false, $isim));
echo $isim;
?>

Çıktısı

bool(true) test

Yöntem 2

<?php
class nesne {
  function test(){}
}
$nesne = new nesne();
$fonksiyon = array($nesne, 'test');
var_dump(is_callable($fonksiyon, true, $isim));
echo $isim;  
?>

Çıktısı

bool(true) nesne::test

 

__call Fonksiyonu ile Parametre Tanımlayarak Veri Alışverişi Yapmak

Bu örnek yaygın olarak set ve get metodu olarak bilinen uygulamayı içermektedir.

<?php
class Sinifim{
  protected $ayarlar = [];
  public function __call($fonksiyon, $parametreler = null){
		if($fonksiyon == 'ver' && count($parametreler) == 2){
			$anahtar = $parametreler[0];
			$deger = $parametreler[1];
			$this->ayarlar[$anahtar] = $deger;
		}elseif($fonksiyon == 'al' && count($parametreler) == 1){
      $anahtar = $parametreler[0];
      if(array_key_exists($anahtar, $this->ayarlar)) return $this->ayarlar[$anahtar];
    }else{
      exit('Veri tanımlanmadı!');
    }
  }
}
$obje = new Sinifim;
$obje->ver('isim', 'Ulusan');
echo $obje->al('isim')."<br>";
$obje->ver('isim', 'Yazılım');
echo $obje->al('isim')."<br>";
?>

Çıktısı

Ulusan
Yazılım

 

__call Fonksiyonu ile Olmayan Fonksiyonu ve Parametrelerini Almak

<?php
class Sinifim{
  public function deneme(){
    echo "deneme fonksiyonu çağırıldı<br>";
  }
  public function __call($fonksiyonAdi, $parametreler = null){
		echo "" . $fonksiyonAdi ." fonksiyonu " . count($parametreler) . " parametre ile çağırıldı!<br>";
		echo "Bu parametreler ";
		foreach($parametreler as $p){
			echo $p." ";
		}
		echo "dir";
  }
}
$obj = new Sinifim;
$obj->deneme();
$obj->benyokum('veri1','veri2');
?>

Çıktısı

deneme fonksiyonu çağırıldı
benyokum fonksiyonu 2 parametre ile çağırıldı!
Bu parametreler veri1 veri2 dir