CodeBlanks Logo Icon CodeBlanks

Property başlatma

PHP kursu · Orta seviye · Ders 9/115

Yapıcıda property'lere ilk değer atamayı öğrenirsin.

Yapıcıda property başlatma

Yapıcının en sık kullanıldığı yer, sınıfın property'lerine (özelliklerine) ilk değer vermektir. Bunun için parametre değerini $this->propertyName'e atarsın.

class User {
    public string $name;

    public function __construct($name) {
        $this->name = $name;
    }
}

Burada yapıcıya gelen $name parametresi, örnek üzerindeki $this->name özelliğine kopyalanır. Böylece her örnek kendi adını taşır ve başka metodlar bu değeri $this->name ile okuyabilir.

Parametre ile property aynı adda olsa bile PHP ikisini ayrı görür: $name parametre, $this->name ise örneğe ait özelliktir.

Özellik bildirimi ve başlatma

Property'leri yapıcıda başlatmadan önce sınıf içinde bildirmen gerekir. Bildirim, sınıfın en üstüne yazılır ve erişim seviyesi ile tür içerir:

class Account {
    public string $owner;
    public float $balance;
}

Yapıcı içinde her property'ye $this->owner = $owner; gibi atama yaparsın. Eğer property bildirilmeden atama yaparsan PHP dinamik property uyarısı verir; bu nedenle önce bildirim, sonra başlatma sırasını izlemek en sağlıklı yoldur.

İstersen property bildiriminde varsayılan değer de verebilirsin: public float $balance = 0.0;. Ama çoğunlukla yapıcı içinde ilk değer vermek daha esnektir.

Uygulama Book sınıfında property başlatma

Book adında bir sınıf tanımla. Sınıf içinde public string $title; ve public string $author; özelliklerini bildir. Yapıcı metod __construct($title, $author) imzasıyla bu iki parametreyi alsın ve gövdede $this->title = $title; ve $this->author = $author; atamalarını yapsın. Sınıfın altında $b = new Book("Suç ve Ceza", "Dostoyevski"); ile bir örnek oluştur ve echo $b->title . " - " . $b->author . "\n"; satırıyla yazdır.

Örnek çözümü göster
Sınıfın en üstüne public string $title; ve public string $author; yaz. Yapıcı gövdesinde $this->title = $title; ve $this->author = $author;. Sonra $b = new Book("Suç ve Ceza", "Dostoyevski"); ve echo $b->title . " - " . $b->author . "\n";.
Örnek çözüm:
<?php
// Book sınıfını tanımla, property'leri bildir ve yapıcıda başlat
class Book {
    public string $title;
    public string $author;

    public function __construct($title, $author) {
        $this->title = $title;
        $this->author = $author;
    }
}
$b = new Book("Suç ve Ceza", "Dostoyevski");
echo $b->title . " - " . $b->author . "\n";

Kendini test et

  1. $this->name = $name ne yapar?

    • Parametreyi örnek özelliğine kopyalar
    • Örnek özelliğini parametreye kopyalar
    • İki parametreyi birleştirir
    • Yeni bir yerel değişken tanımlar
    Cevabı göster

    Parametreyi örnek özelliğine kopyalar — Doğru. $this->name örnek özelliğidir; $name ise parametre. Atama sağdan sola yapılır.

  2. Kavramları eşle

    $this->name
    örnek özelliği
    $name
    yapıcı parametresi
    public string $name
    özellik bildirimi
    $this->name = $name
    yapıcıdaki atama
  3. Atama satırını tamamla

        public function __construct($owner) {
            ____;
        }
    Cevabı göster
        public function __construct($owner) {
            $this->owner = $owner;
        }

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