parent:: ile ebeveyne erişim
parent:: ile ebeveyn sınıfın method ve yapıcısına erişmeyi öğrenirsin.
parent:: ile ebeveyne erişim
Bazen çocuk sınıf, ebeveyn sınıfın bir metodunu (özellikle __construct) çağırmak ister. PHP'de bunun için parent:: operatörü kullanılır.
parent:: aslında ebeveyn sınıfın adını yazmanın kısayoludur. parent::method() yazmak, ebeveynin method()'unu çağırır. Bu, özellikle çocuk sınıf kendi yapıcısını tanımladığında kritiktir: ebeveynin yapıcısı otomatik çağrılmaz, açıkça parent::__construct(...) yazman gerekir.
İki nokta üst üste (::) operatörüne scope resolution (kapsam çözümleme) operatörü denir.
parent::__construct örneği
Car sınıfı hem brand hem de doors (kapı sayısı) bilgilerini tutsun. Vehicle ebeveynin yapıcısı yalnızca brand bekler.
Çocuk sınıfın yapıcısı iki parametre alır: $brand ve $doors. parent::__construct($brand) ile ebeveynin yapıcısını çağırıp $brand'ı aktarır, sonra $this->doors = $doors ile kendi property'sini başlatır.
Bu desen, ebeveynin başlatma mantığını çoğaltmadan onu yeniden kullanmanın standart yolu.
Uygulama Car yapıcısı parent::__construct çağırsın
Bu derste Vehicle sınıfı yalnızca brand alıyor. Sen, Car sınıfını Vehicle'dan türet ve kendi yapıcısında iki parametre ($brand ve $doors) al. Yapıcının içinde parent::__construct($brand) ile ebeveynin yapıcısını çağır, sonra $this->doors = $doors ile doors property'sini başlat. info() metodu brand ve doors'u birleştirsin. Volvo marka 4 kapılı bir Car örneği yapıp info() çıktısını yazdır.
Örnek çözümü göster
:__construct($brand) ile ebeveyne paslar, sonra $this->doors'u atar.
Örnek çözüm:
<?php
class Vehicle {
public string $brand;
public function __construct(string $brand) {
$this->brand = $brand;
}
}
class Car extends Vehicle {
public int $doors;
public function __construct(string $brand, int $doors) {
parent::__construct($brand);
$this->doors = $doors;
}
public function info(): string {
return $this->brand . " - " . $this->doors . " kapı";
}
}
$car = new Car("Volvo", 4);
echo $car->info();
Kendini test et
-
Çocuk sınıf kendi yapıcısını tanımladığında ne olur?
- Ebeveynin __construct'ı otomatik çağrılır
- Ebeveynin __construct'ı hiç çağrılmaz, parent::__construct() gerekir
- Sınıf örneği oluşturulamaz
- Ebeveyn sınıf silinir
Cevabı göster
Ebeveynin __construct'ı hiç çağrılmaz, parent::__construct() gerekir — Doğru; çocuk __construct tanımlarsa ebeveynin yapıcısı otomatik çağrılmaz, parent::__construct() yazmalısın.
-
parent::__construct çağrısını tamamla
public function __construct(string $brand, int $doors) { ____::__construct($brand); $this->doors = $doors; }Cevabı göster
public function __construct(string $brand, int $doors) { parent::__construct($brand); $this->doors = $doors; } -
parent:: ile ilgili kavramları eşleştir
- parent::
- Ebeveyne erişim operatörü
- ::
- Kapsam çözümleme operatörü
- parent::__construct()
- Ebeveyn yapıcısını çağırır
- Kendi __construct
- Ebeveyn yapıcısı otomatik çağrılmaz