Tem.20

PHP OOP (Nesne Yönelimli Programlama) Ders 5 : Yapıcı ve Yıkıcı Metotlar (__construct() ve __destruct())

Bir Class çağırıldığında, onun hemen işlem yapmasını isteyebiliriz. Class ile işimiz bittiğinde de yine başka bir işlem yapmasını isteyebiliriz. Bu işlemlerde yapıcı ve yıkıcı dediğimiz sihirli fonksiyon tanımlamaları devreye girer.

Az önce Class içindeki metodumuzu çalıştırmak için bir Object oluşturmuştuk. Obje içinde de metodu tetiklemiştik. Ancak istersek Object oluşturup metodu tetiklemeden de istediğimiz bir fonksiyonu çalıştırabiliriz.

__construct()

<?php 
class Merhaba {  
	function __construct() { 
                     echo 'Merhaba'; 
	} 
}
$selamlamaMesaji = new Merhaba();
?>

Kod yapımızda gördüğünüz gibi bir Object oluşturduk sadece. Class içinde de metodumuzun ismine bakarsanız merhabaDe() değil, __construct() olmuş (İki tane _ işareti yan yana, arada boşluk olmadan yazılır). PHP derlendiğinde, bu metodun ilk çalıştırılacağı anlaşılır ve hemen tetiklenir. Bu kod çalıştırıldığında, fonksiyon çağırılmadığı halde bize “Merhaba” diyecektir.

__destruct()

Bunun bir de tersi vardır, o da yıkıcı metottur. O da __destruct() ile tanımlanır.

Şimdi şöyle bir kod yazıp neler olduğunu inceleyelim…

<?php 
class Merhaba { 
	function __construct() { 
       		echo 'Merhaba ' ; 
	} 
	function isimAl($isim){
		$this -> isim = $isim;
		echo $isim;
	}
	function __destruct() { 
                           echo ', güle güle...'; 
	} 
}

$selamlamaMesaji = new Merhaba();
$selamlamaMesaji -> isimAl('Uğur');

?>

Bu kod yapımızda, sadece bir adet metodu parametreli olarak çağırıyoruz. Yani $selamlamaMesaji diye bir nesne üretip, bunun içindeki isimAl() metoduna Uğur parametresini gönderiyoruz. Ancak nesneyi oluşturduğumuzda hemen __construct() metodu çalışıp “Merhaba ” yazısını ekrana bastı. Biz de o sırada metoda “Uğur” parametresini gönderdik. Metotla işimiz bitmiş olunca, bu sefer kedisi otomatik olarak __destruct() metodunu devreye soktu ve bize “, güle güle…” dedi. Final olarak bize çıkan mesaj “Merhaba Uğur, güle güle…” oldu.

İçeriği paylaş:
  • facebook
  • twitter