<?phpclass test {}$test = new test();echo get_class($test);?>
Çıktısı
test
<?phpclass test {}$test = new test();echo get_class($test);?>
Çıktısı
test
Hata Örneği
<?phpclass 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
<?phpclass 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
<?phpclass 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
<?phpclass 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
<?phpclass 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.
<?phpclass 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ı
UlusanYazılım
<?phpclass 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