Php ile classlara giriş. __construct ve __destruct metotları

Php ile classlara girmeden önce class yapısı hakkında biraz bilgi vermek istiyorum. Php5 ile class yapılarında ciddi bir değişiklik söz konusu oldu php4 deki class yapısı bize bir çok şeyi yapmamıza imkan vermiyordu. Örneğin bir signleton yazılım desenine olanak sağlamıyordu veya gizli olması gereken fonksiyon veya değişkenleri gizlemek için genelde diğerlerinden ayrı olsun diye comment satırları girer veya önlerine _ koyarak belirtmeye çalışır kullanıcıların yanlış kullanımlarını önlemeye çalışırdık.
Php5 den itibaren artık bu tarz comment satırları girmek yerine public, protected, private, static, final, const gibi tanımlar gelmiştir. Bunlar class yazılımında programcılara büyük bir avantaj sağlamaktadır. Örneğin kullanıcının kullanmasını istemediğimiz metot veya değişkenleri private tanımlayarak sadece class içerisinden erişim yapmasını sağlayabiliyoruz ve daha bunun gibi bir çok yeni güzel şeyler var.
Şimdi gelelim classlara. Php ile class yazarken genelde kullanacağımız iki adet sabit metot var diyelim. Sabit dedim başka bir isim bulamadım şuan aklıma gelmiyor. Bu metotlar olmassa olmaz değil ama zamanla çok işimize yarayacak olan __construct ve __destruct metotlarıdır. Construct bir class başlatılırken yapılacak olan işleri yapmakla yükümlü olurken destruct metodu ise tam tersi sınıf sonlandığında yapılması gereken işleri yapmakla yükümlüdür.
Nerelerde kullanacağız sorusuna gelince, Bir sınıf başlatılırken belli başlı bazı ayarlar veya ek işlemler varsa bu metot içine yazılır. Destruct da ise tam tersi örneğin bir class başlarken kullanılan ayarları sıfırlamak için kullanabilirsiniz veya değişkenleri unset etmek için kullanabilirsiniz.
Örnekle devam edelim.
01< ?php
02class ilk_sinifim
03{
04    public function __construct()
05    {
06        echo 'Merhaba \'ilk_sinifim\' başlatıldı.';
07    }
08}
09  
10$ilk_sinifim new ilk_sinifim;
11?>
Yukarıdaki örneğimizi yazıp çalıştırdığımız da ekrana “Merhaba ‘ilk_sinifim’ başlatıldı.” şeklinde bir yazıyla karşılaşırız. Ne demiştik __construct (kurucu fonksiyon, yapılandırıcı fonksiyon) sınıf başlatılırken yapılması gereken işlemler varsa bu metotda tanımlanır ve sınıf başlatılırken bu metot içeriği otomatik çalışır demiştik.
Aynı zamanda eğer __construct metodunu kullanacaksak kesinlikle public anahtarı ile tanımlanması gerekir aksi halde protected veya private tanımlanırsa hata ile karşılaşırsınız. İsterseniz __construct metoduna sınıf başlatılırken değişken de gönderebilirsiniz.
Aynı örneği bu sefer de değişken göndererek yapalım.
01< ?php
02class ilk_sinifim
03{
04    public function __construct($name)
05    {
06        echo 'Merhaba {$name}, ben \'ilk_sinifim\' memnun oldum.';
07    }
08}
09  
10$ilk_sinifim new ilk_sinifim('yusuf');
11?>
Bu örnekte de sınıf başlatılırken bir $name değişkeni gönderdik. Sınıf başlatıldığında ise “Merhaba yusuf ben ‘ilk_sinifim’ memnun oldum.” yazısı çıkacaktır.
Destruct metodu ise construct metodunun tam tersidir. Sınıf sona erdiğindeki işlemleri yapar.
Bir örnekle pekiştirelim.
01< ?php
02class ilk_sinifim
03{
04    private $name;
05  
06    public function __construct($name)
07    {
08        $this->name = $name;
09        echo $this->name;
10    }
11  
12    public function __destruct()
13    {
14        echo 'Name değişken içeriği boşaltıldı.';
15        unset($this->name);
16    }
17}
18  
19$ilk_sinifim new ilk_sinifim('yusuf');
20?>
Örnekte öncelikle dışardan erişemeyecekleri şekilde bir $name değişkeni tanımladık. Ardından __construct metoduna bir $name değişkeni göndererek sınıf içinde tanımladığımız $name değişkenine eşitledik ve ekrana yazdırdık. Ardından sınıf sonlanacağı vakit ekrana “Name değişken içeriği boşaltıldı.” yazısını yazıp sınıf içindeki $name değişkeninin içeriğini boşaltacaktır.
Destruct metoduda construct gibi public ile tanımlanmalıdır.

Hiç yorum yok:

Yorum Gönder

 

Sample Text

Sample Text