Sınıflar ve Nesneler
PHP Manual

Kurucular ve Yıkıcılar

Kurucular

void __construct ([ mixed $değiştirge [, $... ]] )

PHP 5 geliştiricilerin sınıflar için kurucu yöntemler bildirmesine imkan verir. Bir kurucu yöntemi olan sınıflar her yeni nesne oluşturuluşunda bu yöntemi çağırırlar, bu bakımdan nesne kullanılmadan önce yapılması gereken ilklendirmeler için kurucular çok uygundur.

Bilginize: Çocuk sınıflardan kurucusu olanlar için örtük olarak ebeveyn sınıfın kurucusu çağrılmaz. Ebeveyn sınıfın kurucusunu çocuk sınıftan çağırmak için, çocuk sınıf içinden parent::__construct() çağrısı yapılması gerekir.

Örnek 1 - Yeni tekilleşmiş kurucuların kullanımı

<?php
class AnaSınıf {
   function 
__construct() {
       print 
"AnaSınıf kurucusundayız\n";
   }
}

class 
AltSınıf extends AnaSınıf {
   function 
__construct() {
       
parent::__construct();
       print 
"AltSınıf kurucusundayız\n";
   }
}

$obj = new AnaSınıf();
$obj = new AltSınıf();
?>

Geriye dönük uyumluluk için, PHP 5 belirtilen sınıfa ait bir __construct() yöntemi bulamazsa, sınıfın ismine bakarak eski tarz bir kurucu arayacaktır. Dolayısıyla, uyumluluk sorunu yaşayacağınız tek durum sınıf dahilinde __construct() isimli bir yöntemin amacı dışında kullanılması olabilir.

Yıkıcılar

void __destruct ( void )

PHP 5, C++ gibi nesne yönelimli dillerdekine benzer bir yıkıcı tasarımına sahiptir. Yıkıcı yöntem, belli bir nesneye yönelik tüm gönderimler kaldırıldığı ya da nesne kapanma sırasında açıkça yok edildiği anda çalıştırılacaktır.

Örnek 2 - Yıkıcı Örneği

<?php
class YıkıcıSınıf {
   function 
__construct() {
       print 
"Kurucu çalıştı\n";
       
$this->name "YıkıcıSınıf";
   }

   function 
__destruct() {
       print 
"" $this->name " yok ediliyor\n";
   }
}

$obj = new YıkıcıSınıf();
?>

Kurucularda olduğu gibi ebeveyn yıkıcılar çocuk sınıflar için dolaylı olarak çağrılmayacaktır. Ebeveyn sınıfın yıkıcısının çalışması için çocuk sınıfın yıkıcısından parent::__destruct() çağrısının yapılması gerekir.

Bilginize:

Yıkıcılar, HTTP başlıklarının gönderilmiş olmasını sağlamak için betik sonlanırken çağrılırlar. Betiğin kapanma aşamasındaki çalışma dizini bazı SAPI’lerde (Apache gibi) farklı olabilir.

Bilginize:

Bir yıkıcı içinden bir istisna oluşturmaya çalışmak (betiğin sonlandırılması sırasında) ölümcül hata ile sonuçlanır.


Sınıflar ve Nesneler
PHP Manual