<?php class test {} $test = new test(); echo get_class($test); ?>
Çıktısı
test
<?php class test {} $test = new test(); echo get_class($test); ?>
Çıktısı
test
Hata Örneği
<?php class sinif{ public static function OrnekAl(){ return null; } } class test extends sinif{} echo get_class(test::OrnekAl()); ?>
get_class ile bir sınıf ismi döndürmek istedik. Fakat dönen test::OrnekAl() sonucu bir fonksiyon içindeki null‘dü. Düzeltmek için aşağıdaki yöntemler kullanılabilir.
1.Ana ismi almak için fonksiyon sonucunu static sınıfa çevirmek
<?php class sinif{ public static function OrnekAl(){ return new static; } } class test extends sinif{} echo get_class(test::OrnekAl()); ?>
2.Ana ismi almak için fonksiyon ismini kaldırmak
<?php class sinif{ public static function OrnekAl(){ return null; } } class test extends sinif{} echo get_class(new test); ?>
3.Alt ismi almak için sınıfı döndürmek
<?php class sinif{ public static function OrnekAl(){ return new sinif; } } class test extends sinif{} echo get_class(test::OrnekAl()); ?>
4.Alt ismi almak için direk sınıfı çağırmak
<?php class sinif{ public static function OrnekAl(){ return null; } } class test extends sinif{} echo get_class(new sinif); ?>
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
<?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