Özet - Yapıcı metot
- PHP kursu
- Orta seviye
- Ders 12/115
- 5 dk
Yapıcı, parametre ve property başlatmayla banka hesabı sınıfı yazarsın.
Özet - Yapıcı metot
Bu grupta yapıcı (constructor) ve yıkıcı (destructor) metodları öğrendin. Özetle:
__construct: new ile örnek oluşturulduğunda otomatik çağrılır. Parametre alabilir ve property'lere ilk değer verir.__destruct: örnek yok edilirken çağrılır; dış kaynakları temizlemek için kullanılır.- Sınıf tür bildirimi (
Engine $engine) parametreyi yalnızca o sınıfa sınırlandırır ve bağımlılık enjeksiyonunu mümkün kılar.
Şimdi tüm bunları bir araya getiren bir banka hesabı sınıfı yazacaksın.
Uygulama BankAccount sınıfını yaz
BankAccount adında bir sınıf tanımla. public string $owner; ve public float $balance; özelliklerini bildir. Yapıcı __construct(string $owner, float $balance) imzasıyla iki parametre alsın ve $this->owner = $owner; ve $this->balance = $balance; atamalarını yapsın. Sınıfın altında $acc = new BankAccount("Ayşe", 1500.0); ile örnek oluştur ve echo $acc->owner . ": " . $acc->balance . "\n"; satırıyla yazdır.
Başlangıç kodu
<?php
// BankAccount sınıfını tanımlaÖrnek çözüm
<?php
// BankAccount sınıfını tanımla
class BankAccount {
public string $owner;
public float $balance;
public function __construct(string $owner, float $balance) {
$this->owner = $owner;
$this->balance = $balance;
}
}
$acc = new BankAccount("Ayşe", 1500.0);
echo $acc->owner . ": " . $acc->balance . "\n";Beklenen çıktı
Ayşe: 1500
Uygulama BankAccount'a yıkıcı ekle
Önceki BankAccount sınıfına bir __destruct metodu ekle. Yıkıcı gövdesinde echo "Hesap kapatıldı: " . $this->owner . "\n"; yazsın. Sınıfın altındaki örnek oluşturma satırı aynı kalsın: $acc = new BankAccount("Ayşe", 1500.0); ve echo $acc->owner . ": " . $acc->balance . "\n";. Betik sonunda yıkıcı çalışır.
Başlangıç kodu
<?php
// BankAccount sınıfını tanımla, yapıcı ve yıkıcı ekle
class BankAccount {
public string $owner;
public float $balance;
public function __construct(string $owner, float $balance) {
$this->owner = $owner;
$this->balance = $balance;
}
// __destruct metodunu buraya ekle
}
$acc = new BankAccount("Ayşe", 1500.0);
echo $acc->owner . ": " . $acc->balance . "\n";Örnek çözüm
<?php
// BankAccount sınıfını tanımla, yapıcı ve yıkıcı ekle
class BankAccount {
public string $owner;
public float $balance;
public function __construct(string $owner, float $balance) {
$this->owner = $owner;
$this->balance = $balance;
}
// __destruct metodunu buraya ekle
public function __destruct() {
echo "Hesap kapatıldı: " . $this->owner . "\n";
}
}
$acc = new BankAccount("Ayşe", 1500.0);
echo $acc->owner . ": " . $acc->balance . "\n";Beklenen çıktı
Ayşe: 1500 Hesap kapatıldı: Ayşe
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kavramları eşle
| Kavram | Anlamı |
|---|---|
__construct |
başlangıçta çalışır |
__destruct |
bitişte çalışır |
Engine $engine |
sınıf türü parametresi |
$this->balance |
örnek özelliği |
2 Hangi ifade doğrudur?
- Sınıf tür bildirimi yanlış türde TypeError fırlatır Doğru cevap
- Yapıcı parametre almaz
- __destruct new sırasında çağrılır
- __construct return ile değer döndürür
Açıklama: TypeError fırlatır. Diğer seçenekler yanlış: yapıcı return döndürmez, yıkıcı new sırasında değil sona çalışır.