Php de Nesne Yönelimli Programlama - Kurucu ve yıkıcı metotlar

Kurucu metotlar sınıfa ait her bir nesne üretildiği zaman otomatik olarak çalışan özel metotlardandır. Kurucu metotlar genellikle sınıftan nesne üretimi esnasında, sınıfa ait özelliklerin ilk değerlerini yüklemek için ve gerekli görülmesi durumunda diğer başka metotların tetiklenerek çalıştırılması amacıyla kullanılırlar. Ayrıca bu metod public olarak tanımlanmak zorundadır. Aksi halde kurucu metoda erişilemeyeceğinden dolayı sistem ölümcül bir hata verecektir. Yıkıcı metotlar ise tam tersi mantıkla; sınıf ile olan bağlantı sonlandığında çalışırlar. Sınıf kullanımı sona erdiğinde özelliklerin silinmesi ve gerekli metotların çalıştırılması amacıyla kullanılabilirler.

Kurucu ve yıkıcı metotların tanımlanması

- Kurucu metotlar iki şekilde tanımlanabilir:

  1. __construct anahtar kelimesi ile,
  2. Sınıf içinde adı sınıf adıyla aynı olan bir fonksiyon tanımlarsak bu fonksiyon bizim kurucu metodumuz olacaktır.

- Yıkıcı metotlar ise __destruct anahtar kelimesi ile tanımlanırlar.

<?php
class Araba {
    public $marka;
    public $model;

    public function __construct()
    {
        echo 'kurucu metod çalıştı! <br>';
    }
    public function __destruct()
    {
        echo 'yıkıcı metod çalıştı! <br>';
    }
}

$araba1 = new Araba;

// ÇIKTI
/*
kurucu metod çalıştı!
yıkıcı metod çalıştı!
*/
?>

Yukarıda bir Araba sınıfı tanmladık ve içerisinde __construct ve __destruct metodlarını yazdık. Sonrasında dikkat ederseniz sadece $araba1 nesnesini oluşturduk. Nesne oluşturulunca ilk olarak kurucu metod otomatik olarak çalışacak ve ekrana "kurucu metod çalıştı!" çıktısını basacaktır. Daha sonra başka bir işlem yapılmadığı için yıkıcı metod devreye girer ve ekrana "yıkıcı metod çalıştı!" çıktısını basar.

Kurucu metodumuzu __construct anahtar kelimesi haricinde, adı sınıf adıyla aynı olan public bir metod tanımlayarak da oluşturabiliriz. Aşağıdaki örneği inceleyiniz.

<?php
class Kitap
{
    public $ad;
    public $yazar;

    // kurucu metod (adı sınıf adıyla aynı)
    public function kitap()
    {
        echo 'kurucu metod çalıştı <br>';
    }
}

$kitap1 = new Kitap();
$kitap2 = new Kitap();
// ÇIKTI
/*
kurucu metod çalıştı
kurucu metod çalıştı
*/
?>

Örnekte Kitap ismiyle bir sınıf tanımlaması yaptık. Sınıf içerisinde ise sınıf ismiyle aynı isimde (kitap)public bir metod tanımladık. İşte bu bizim sınıfımızın kurucu metodu oldu. Sınıf dışında $kitap1 ve $kitap2 şeklinde iki tane nesne ürettik. Kitap sınıfı her nesne üretiminde çağrılacağı için ekrana iki kere "kurucu metod çalıştı" yazısı yazılıyor.

Parametre alan kurucu metotlar

Sınıflardan nesne üretirken sınıf özelliklerine ilk değer ataması yapabiliriz. Bunu kurucu metodumuza parametre göndererek sağlayabiliriz. Kurucu metodun parametrelerinin alacağı değerleri, sınıftan nesne ürettiğimiz esnada göndeririz.

<?php
class Site
{
    private $ad;
    private $url;

    // Parametre alan kurucu metod
    public function __construct($ad, $url)
    {
        $this->ad = $ad;
        $this->url = $url;
    }

    public function ekranaYaz()
    {
        echo "$this->ad : $this->url <br>";
    }
}

$site1 = new Site('Google', 'google.com');
$site2 = new Site('Facebook', 'facebook.com');

$site1->ekranaYaz();
$site2->ekranaYaz();
// ÇIKTI
/*
Google : google.com
Facebook : facebook.com
*/
?>

Örnekte Site adında bir sınıf oluşturduk.

public function __construct($ad, $url)
{
    $this->ad = $ad;
    $this->url = $url;
}

Daha sonra kurucu metodu oluşturuken iki adet parametre alacağını belirttik. Parametrelerden gelen değerleri sınıf özellikleri olan ad ve url değişkenlerine atadık.

Burada parametrelere verdiğimiz isimler sınıf özellikleriyle aynı olmak zorunda değildir. Farklı isim verilebilir. Örneğin aşağıdaki kod bloğunda gözüktüğü üzere; ad yerine isim, url yerine adres gibi farklı isimler de yazabiliriz. Fakat $this->ad ve $this->url kısmı sabittir. Çünkü burada yazdığımız isimler, sınıfın özelliğinde kullandığımız isimlerdir.
public function __construct($isim, $adres)
{
    $this->ad = $isim;
    $this->url = $adres;
}

Site sınıfından $site1 ve $site2 adında iki adet nesne ürettik ve bu nesneler için kurucu metoda aşağıdaki şekilde ad ve url değerlerini gönderdik. Artık gönderdiğimi bu değerler tanımlandığı nesneler için kullanılabilecekler.

$site1 = new Site('Google', 'google.com');
$site2 = new Site('Facebook', 'facebook.com');

Daha sonra ekranaYaz() metodu her nesne için ayrı ayrı çağrılıyor ve daha önce yüklediğimiz değerleri bu metod içinde aşağıdaki şekilde ekrana yazdırabiliyoruz.

public function ekranaYaz()
{
    echo "$this->ad : $this->url <br>";
}
ETİKETLER
php nesne yönelimli programlamaphp kurucu ve yıkıcı metotlarphp de kurucu metot kullanımıphp de yıkıcı metot kullanımıphp __construct kullanımıphp __destruct kullanımıkurucu metoda parametre gönderme
Öncekİ Yazı

Php de Nesne Yönelimli Programlama - Erişim belirteçleri

Sonrakİ Yazı

Php de Nesne Yönelimli Programlama - Kalıtım ile sınıfları genişletme

İlgili Yazılar