Php OOP Eğitimleri – Zincirleme Methodlar (Chain Methods)

Merhabalar arkadaşlar, Mobilhanem.com için hazırladığımız php eğitimlerinde bu ders Zincirleme Methodları göreceğiz. Nedir bu zincirleme methodlar diyecek olursak; kısaca bir sınıftan oluşturulan nesnenin methodlarını tek satırda artarda çağırmak diyebiliriz.

Zincirleme Methodlar

Zincirleme (chain) methodlar bir zincir gibi artarda çağırılabilen methodlardır dedik. Örneğin: $insan->m1()->m2()->m3()….. şeklinde çağırılabilen methodlardır.

Bir methodun zincirleme method olması için geriye her zaman sınıfı döndürmesi gerekir.

public function fo() {

... İşlemler 

return $this;

}

 

Peki ne işimize yarar bu chain methodlar?

  • Kod kalabalığını azaltır.
  • kod okunabilirliğini artırır.
  • Performansı artırır.

Şimdi normal bir şekilde bir insan sınıfı oluşturalım daha sonra bu sınıfı zincirleme methodlar ile çalışabilecek şekilde düzenleyelim.

Düz mantıkta yazılmış sınıf:

class kisi {
  
 private $adSoyad; 
 private $tc;
  
 public function __construct() {  }
 
 
 
 public function setAdSoyad($adSoyad){
 	$this->adSoyad = $adSoyad;
 }
 
 public function setTc($tc){
 	$this->tc = $tc;
 }
 
 // bilgileri dışardan yazdırabilelim.
 public function bilgiYazdir() {
 	echo "Ad Soyad: $this->adSoyad | Tc: $this->tc";
 }
}
 
 
$kisi = new Kisi();

$kisi->setAdSoyad("Vehbi Akdoğan");
$kisi->setTc("1111");
 
$kisi->bilgiYazdir();

Yukarıdaki örnekte setAdSoyad() ve setTc() methodlarını iki ayrı satırda başınca $kisi-> nesnesi olacak şekilde kullandık.

$kisi->setAdSoyad()->setTc() şeklinde çalıştırmayı denersek bu method geriye bir değer döndürmüyor tarzında bir hata alırız.

Zincirleme method kurallarına uygun şekilde sınıfımızı düzenleyelim.

 

<?php
/* 
	Bu PHP Dosyasi Vehbi Akdogan Tarafindan Kodlanmistir.
	E-Posta: [email protected]
	Web: vehbiakdogan.com
*/
class kisi {
  
 private $adSoyad; 
 private $tc;
  
 public function __construct() {  }
 
 
 
 public function setAdSoyad($adSoyad){
 	$this->adSoyad = $adSoyad;
 	return $this;
 }
 
 public function setTc($tc){
 	$this->tc = $tc;
 	return $this;
 }
 
 // bilgileri dışardan yazdırabilelim.
 public function bilgiYazdir() {
 	echo "Ad Soyad: $this->adSoyad | Tc: $this->tc <br/>";
 	
 	return $this;
 }
}
 
 
$kisi = new Kisi();
$kisi->setAdSoyad("Vehbi Akdoğan")->setTc("1111")->bilgiYazdir();

Üsteki örnekte 4 satırda işlem yaparken şimdi 2 satıra düşürmüş olduk. Hatta aşağıdaki şekilde yazıp tek satıra da düşürebiliriz.

(new Kisi())->setAdSoyad("Taha Kırca")->setTc("2222")->bilgiYazdir();

Konunun daha iyi anlaşılması için bir örnek daha yapalım.

Hesap Makinesi Örneği

Zincirleme methodlar kullanarak basit dört işlemi gerçekleştirecek bir hesap makinesi tasarlayalım.

class HesapMakinesi {
	
	private $sonuc = 0;
	
	public function __construct() {
		
	}
	
	public function topla($a) {
		
		$this->sonuc +=$a;
		 
		return $this;
	}
	
	 public function cikar($a) {
		
		$this->sonuc -=$a;
		 
		return $this;
	} 
	
	public function carp($a) {
		
		$this->sonuc *=$a;
		 
		return $this;
	} 
	public function bol($a) {
		
		$this->sonuc /=$a;
		 
		return $this;
	} 
	
	public function sonucuGoster() {
		echo "Sonuç : ".$this->sonuc;
		
		return $this;
	}
}

klasik bakkal hesapmakinesi tarzında 4 işlemi gerçekleştirebilen bir hesap bakinesi tasarladık.

Şimdi bu hesap makinesini  test etmek için (3*5+4-9)/2 = 5 işlemini hesap makinesinde test edelim.

$makine = new HesapMakinesi();

$makine->topla(3)
		->carp(5)
		->topla(4)
		->cikar(9)
		->bol(2)
		->sonucuGoster();

// Çıktı 
// Sonuç : 5

şeklinde hesap makinemizi çalıştırmış olduk. Zincirleme methodlar veri tabanı sınıflarında daha güzel bir şekilde kullanılabiliyor. Şuan henüz veri tabanı işlemlerini görmediğimiz için örnek yapmayacağım. Umarım konu anlaşılmıştır 🙂

Chain methodlar sadece php dilinde  değil diğer nesne yönelimli programlama dillerinde de çok sık olarak kullanılmaktadır.

Bir dersimizin daha sonuna geldik. Bir sonraki dersimizde görüşmek üzere ?

 

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm php dersleri için tıklayınız..

 

3

Vehbi Akdoğan

Erzurum Atatürk Üniversitesi Bilgisayar Mühendisliği Mezunu
Web & Android Developer
#erzurumspor

1 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?