PHP OOP Sihirli Yöntemler (Magic Methods)
Selamün Aleyküm Arkadaşlar;
PHP’nin sınıflara ait bazı özel metodları vardır.
__call()
Tanımlanmayan bir metod çağırıldığı zaman tetiklenir. İki parametre alır. Çağırılan metod ismi ve metoda gönderilen parametre-ler.
class ogr { public $ad; public function __call($f_isim, $parametreler) { echo $f_isim . " isimli bir metod tanımlı değildir. " . implode(', ', $parametreler) . " değer-ler atanamaz."; } } $ogr = new ogr(); $ogr->adgetir("paramdeger"); //Ekran çıktısı: adgetir isimli bir metod tanımlı değildir. paramdeger değer-ler atanamaz.
__callStatic()
PHP 5.3.0 sürümünde eklenmiştir. Tanımlı olmayan bir static metodu çağırdığımızda tetiklenir. Parametre olarak çağırılan metod ismi ve parametre-leri alır.
class ogr { public $ad; public function __callStatic($f_isim, $parametreler) { echo "static" . $f_isim . " isimli bir metod tanımlı değildir. " . implode(', ', $parametreler) . " değer-ler atanamaz."; } } $ogr = new ogr(); ogr::adgetir("paramdeger");
__get($degiskenisim)
Bir değişkeni çağırdığınızda o değişken sınıfta yoksa __get($degiskenisim) metodu tetiklenir. Parametre olarak değişken ismini verir.
class ogr { public $ad; public function __get($d_isim) { echo $d_isim . " isimli değişken tanımlı değildir."; } } $ogr = new ogr(); echo $ogr->ad1; //Ekran çıktısı: ad1 isimli değişken tanımlı değildir.
ad1 değişkeni ogr sınıfında tanımlı olmadığı için __get metodu tetiklenir.
__set($degiskenisim, $degiskendeger)
Tanımlı olmayan bir değişkene değer atanmaya çalışıldığında tetiklenir. Parametre olarak iki tane parametre alır. Değişken ismi ve değişken değer.
class ogr { public $ad; public function __set($d_isim, $d_deger) { echo $d_isim . " isimli değişken tanımlı değildir. " . $d_deger . " değerini atayamazsınız."; } } $ogr = new ogr(); $ogr->ad1="Veli"; //Ekran çıktısı: ad1 isimli değişken tanımlı değildir. Veli değerini atayamazsınız.
ad1 degişkeni tanımlı olmadığı ve değer atamaya çalıştığımız zaman __set metodu tetiklenir.
__invoke()
Bu özellik PHP 5.3.0’dan beri eklenmiştir. Sınıfa bir parametre gönderdiğimiz zaman tetiklenir. Kullanımı şu şekildedir.
class ogr { public $ad; public function __invoke($param) { echo implode(", ", $param) . " parametre-ler gönderilmiş bir __invoke() metoduyum."; } } $ogr = new ogr(); $ogr("param-deger");
__tostring()
Sınıf ekrana çıktılandığında çalışır. Yani türettiğimiz bir sınıfa echo, print uygularsak __tostring() metodu tetiklenir. Geriye yazılacak bir nesne göndermelidir.
class ogr { public function __tostring() { return get_class($this) . " sınıfının __tostring() metoduyum."; } } $ogr = new ogr(); echo $ogr; //Ekran çıktısı: ogr sınıfının __tostring() metoduyum.
echo $ogr komutuyla __tostring() metodu tetiklendi ve return’le dönen kayıt çıktı olarak yazıldı.
__clone()
Bir değişkende bulunan sınıfı başka bir değişkene klonladığımızda __clone() metodu tetiklenir.
class ogr { public function __clone() { echo get_class($this) . " sınıfının __clone() metoduyum."; } } $ogr = new ogr(); $tmpogr = clone $ogr; //Ekran çıktısı: ogr sınıfının __clone() metoduyum.
Hayırlı günler, sağlıcakla kalın.
Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.