Php Oop Dersleri 3 – Sihirbaz Metotlar

Merhaba arkadaşlar,

Php oop derslerimize kaldığımız yerden devam ediyoruz. Bir önceki yazımızda oop mimarisinde gizlilik kavramını ele almıştık. Bu dersimizde ise sihirbaz metotları inceleyeceğiz. Öncelikle sihirbaz metot nedir onu bir açıklayarak konumuza giriş yapalım. Sihirbaz metot sınıf ve olay çevresinde çalışan php dili ile tanımlı olarak gelen metotlardır. Sihirbaz metotların sadece sınıf içerisinde kullanıldığı gibi yanlış bir bilgi oluşmasın kesinlikle. Sınıf dışında da bazı sihirbaz metotları kullanabilmek mümkündür. Bazı sihirbaz metotların geliştiriciler tarafından çok fazla kullanıldığını söylemek doğru değil ancak bazı gerekli durumlarda kesinlikle kullanılması kanaatindeyim. Php 5 ile gelen toplam 15 adet sihirbaz metot bulunmaktadır.

Sihirbaz metotların önünde __ işlevi bulunur ve sihirbaz olmayan metotların önüne __ işlevi koyulması php tarafından önerilmez. İleride sorunlar çıkarabilir. Bu dipnottan sonra konumuza dönecek olursak biz bu yazımızda 4 adet sihirbaz metodu inceleyeceğiz. Sihirbaz metotların hepsi public olarak tanımlanmak zorundadır. Dilerseniz ilk sihirbaz metodumuzla başlayalım.

__construct()

__construct() metodu bir sınıf çağrıldığı anda çalışan metodumuzdur. Bu metodumuzu php oop dersleri giriş dersimizde yapıcı metot olarak adlandırmıştık. Basit bir örnek ile olayı netleştirelim.


<?php

class OopDersleri {

   public function __construct(){

      echo "OopDersleri sınıfı çalıştı.";

   }

}

$oop = New OopDersleri();

?>

Bu betiği çalıştırdığımızda “OopDersleri sınıfı çalıştı” çıktısını verecektir. __construct() sihirbaz metodu nerelerde kullanılır ? ne işimize yarayacak ? diye soracak olursanız bu metodumuz genelde türediği sınıfın metotlarına erişmek, sınıf kullanılmadan önce yapılması gereken temizleme vb. gibi işlemler için kullanılır.

__destruct()

__destruct() metodu ise __construct() metodunun aksine sınıf en son işlemi yaptığında yani sınıf bittiğinde çalışan metottur. Bu metodumuza da oop giriş dersimizde yıkıcı metot demiştik. Şimdi bir önceki sihirbaz metodumuz ve __destruct() metodumuzu kullanarak bir örnek yapalım.


<?php

class OopDersleri {

   public function __construct(){

      echo "OopDersleri sınıfı çalıştı.";

   }

   public function __destruct(){

      echo "OopDersleri sınıfı bitti.";

   }

}

$oop = New OopDersleri();

?>

Bu betiği çalıştırdığımızda ise “OopDersleri sınıfı çalıştı.OopDersleri sınıfı bitti.” çıktısını verecektir.

__toString

Bu sihirbaz metodumuz sınıf objesini direk ekrana bastığımızda, obje değeri yerine istediğimiz bir içeriğin veya argümanın çıkmasını sağlar. Bir objeyi direk ekrana basmak da nereden çıktı diyecek olursanız eğer hemen kısa bir örnekle önce onu açıklayalım.


<?php

class OopDersleri {

}

$oop = New OopDersleri();
echo $oop;

?>

Burada echo $oop koduyla objeyi direk ekrana bastık. Ancak bu kodumuz bize bir hata döndürdü. Şimdi basit bir örnekle _toString sihirbaz metodumuzun ne işe yaradığına bir bakalım.


<?php

class OopDersleri {

   public $name = "OopDersleri Sınıfı";

   public function __toString(){
      return $this->name;
   }

}

$oop = New OopDersleri();
echo $oop;

?>

Bu betiğimiz bize “OopDersleri Sınıfı” çıktısını verecektir. Bu metodumuzu da aslında sınıfın adını ve sınıfın özelliklerini ekrana basmak için kullanıyoruz.

__call

Bu sihirbaz metodumuz ise sınıf içerisinde olmayan bir metodu veya argümanı çağırdığımız zaman çalışan metodumuzdur. Genellikle hata metni oluşturmak için kullanılır. __call sihirbaz metodu diğerlerinden farklı olarak iki adet parametre alır. Hemen bir örnek ile konumuzu netleştirelim.


<?php

class OopDersleri {

   public function __call($name, $attr){
      echo $name. " adlı metot bulunamadı.";
   }

}

$oop = New OopDersleri();
$oop->yaz();

?>

Bu betiğimiz bize çıktı olarak “yaz adlı metot bulunamadı.” çıktısını verecektir. Eğer burada __call sihirbaz metodunu kullanmamış olsaydık sınıf içerisinde olmayan bir metodu çağırdığımız için derleyicimiz hata verecekti.

Php oop dersleri sihirbaz metotlar konumuz bu kadar arkadaşlar. Yazının başında bahsettiğim 15 adet sihirbaz metodu incelemek için http://php.net/manual/tr/language.oop5.magic.php adresini kullanabilirsiniz . Ancak şimdilik başlangıç olarak bu kadarını bilmemiz yeterlidir. İlerleyen yazılarımızda yine bazı sihirbaz metotları ele alacağız. Umarım faydalı olur bir sonraki yazımızda görüşmek üzere 🙂

Yorumlar

  1. By Blada

    Cevapla

    • By emrtnm

      Cevapla

  2. By biyro2

    Cevapla

    • By emrtnm

      Cevapla

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Solve : *
18 − 6 =