CodeBlanks Logo Icon CodeBlanks

Özet - Yapıcı metot

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

index.php
<?php
// BankAccount sınıfını tanımla

Örnek çözüm

index.php
<?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

index.php
<?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

index.php
<?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.

Orta seviye bölümündeki tüm dersler