KategorilerPhp

Zincirleme Metotlar ve Özellikler

Selamun Aleyküm.

Bir önceki yazımda , sınıf kapsamındaki özelliklere ve metotlara erişmek için $this anahtar kelimesini kullanmayı öğrendik . Bu bölümde ise bir sınıfın metotları $this anahtar kelimesini döndürdüğünde, diğer metotlar ile birlikte zincirlenebileceklerini öğreneceğiz.

Bu yazıda neleri öğreneceğiz.

  • Metotlar ve özellikler nasıl zincirlenir?
  • Metotları ve özellikleri neden zincirlememiz gerekir?

Örneğin

Car sınıfımızda, arabamızın deposunda ne kadar yakıtımız olduğunu ölçmek istediğimizi varsayalım. Depodaki yakıt miktarı, arabamızda kat ettiğimiz kilometre sayısına ve depoya koyduğumuz yakıt miktarına bağlıdır.

Arabamızın deposunda ne kadar yakıt kaldığını öğrenmemiz için, sınıfımıza, arabanın deposundaki yakıt miktarını temsil eden bir özellik ekleyeceğiz. Bu özelliğin ismini de $depo koyacağız.

class Car {
  public $depo;
}

Ayrıca sınıfımıza iki metot daha eklemeliyiz.

  1. metodumuz doldur(). Bu metodumuz arabamızın deposuna yakıt eklememizi sağlayacak.

2. metodumuz ise git(). Bu metodumuz da belirli bir mesafe gittiğimizde ne kadar yakıt tükettiğimizi hesaplayacak ve ardından tükettiğimiz miktarı depodan eksiltecektir. 

Örneğimizde, arabamızın her 5 km’de 1 litre yakıt tükettiğini varsayalım.

class Car {
 
  public $depo;
 
  // Depomuzu yakıt ile dolduran metodumuz
  public function doldur($litre)
  {
    $this->depo += $litre;
  }
  
  // Arabımızı sürdüğümüzde tükettiğimiz yakıtı depomuzdan eksilten metodumuz
  public function git($km)
  {
    $tukettigimiz_yakit_miktari = $km/5;
    $this->depo -= $tukettigimiz_yakit_miktari;
  }
}

Sınıfımıza yeni eklediğimiz metotlarımızı istediğimiz şekilde düzenledik fakat zincirlemeyi yapabilmemiz için bu metotların bize bir sonuç vermesi gerekiyor. Sonuç vermesi için de bir ekleme daha yapmamız gerekiyor. Aşağıda ki kodlarda bu eklemeyi görebilirsiniz.

class Car {
 
  public $depo;
 
  // Depomuzu yakıt ile dolduran metodumuz
  public function doldur($litre)
  {
    $this->depo += $litre;
    
    return $this; // bu satır bize üst satırda yaptığımız işlemin sonucunu verecek
  }
  
  // Arabımızı sürdüğümüzde tükettiğimiz yakıtı depomuzdan eksilten metodumuz
  public function git($km)
  {
    $tukettigimiz_yakit_miktari = $km/5;
    $this->depo -= $tukettigimiz_yakit_miktari;

    return $this; // bu satır bize üst satırda yaptığımız işlemin sonucunu verecek
  }
}

Artık zincirlememizi yapabiliriz. Zincirlememizi yapmadan önce sorumuzu yazalım.

Soru: Arabamıza 10 litre yakıt koyup 65 kilometre(km) gittiğimizde arabamızın deposunda kaç litre yakıt kalır?

Sorumuz da hazır olduğuna göre hadi cevabı bulalım.

// Sınıfımızdan bir nesne oluşturuyoruz
$araba = new Car();
 
// Zincirleme metodumuzu yazıyoruz. 
$depo = $araba->doldur(15)->git(65)->depo;
 
// Sonuç
echo "Arabamızın deposunda kalan yakıt miktarı:" . $depo . " litre.";
SONUÇ

Arabamızın deposunda kalan yakıt miktarı: 2 litre.
class Car {
 
  public $depo;
 
  // Depomuzu yakıt ile dolduran metodumuz
  public function doldur($litre)
  {
    $this->depo += $litre;
    
    return $this; // bu satır bize üst satırda yaptığımız işlemin sonucunu verecek
  }
  
  // Arabımızı sürdüğümüzde tükettiğimiz yakıtı depomuzdan eksilten metodumuz
  public function git($km)
  {
    $tukettigimiz_yakit_miktari = $km/5;
    $this->depo -= $tukettigimiz_yakit_miktari;

    return $this; // bu satır bize üst satırda yaptığımız işlemin sonucunu verecek
  }
}

// Sınıfımızdan bir nesne oluşturuyoruz
$araba = new Car();
 
// Zincirleme metodumuzu yazıyoruz. 
$depo = $araba->doldur(15)->git(65)->depo;
 
// Sonuç
echo "Arabamızın deposunda kalan yakıt miktarı:" . $depo . " litre.";

Takıldığınız bir yer olursa yorum yapmaktan veya WhatsApp grubumuzdan yazmaktan çekinmeyin. Sorunuz yanıtsız kalmayacaktır. Kendinize iyi bakın. Bir sonraki yazıda görüşmek dileğiyle. Allah’a emanet olun.

mstfkrtll whatsapp-button
https://chat.whatsapp.com/Jul6h8jsXkpKqke2d7N17b