PHP
Property başlatma
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
-
$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.
-
Kavramları eşle
- $this->name
- örnek özelliği
- $name
- yapıcı parametresi
- public string $name
- özellik bildirimi
- $this->name = $name
- yapıcıdaki atama
-
Atama satırını tamamla
public function __construct($owner) {
____;
}
Cevabı göster
public function __construct($owner) {
$this->owner = $owner;
}
Sıradaki ders: Sınıf tür bildirimi