Yapıcıya parametre geçme
Yapıcı metoda parametre geçip örnek oluşturmada kullanmayı öğrenirsin.
Yapıcıya parametre geçme
Yapıcı metod, tıpkı sıradan fonksiyonlar gibi parametre alabilir. Parametreleri __construct parantezi içine yazarsın:
class User {
public function __construct($name) {
echo "Merhaba " . $name;
}
}Örnek oluştururken parametreleri new satırında parantez içine verirsin: $user = new User("Ayşe");. PHP önce nesneyi kurar, sonra "Ayşe" değerini yapıcıya geçirir ve metodu çalıştırır.
Birden fazla parametre virgülle ayrılır: __construct($name, $age). Çağrıda da aynı sırayla verirsin: new User("Ayşe", 28).
Çağrı ve tanımın eşleşmesi
Yapıcıya parametre yazdığında, her new çağrısı o parametreleri sağlamak zorundadır. Eğer parametre eksikse PHP hata verir.
Parametre sırası önemlidir. __construct($name, $age) tanımı için new User("Ayşe", 28) çağrısında ilk değer $name'e, ikinci değer $age'ye geçer. Sırayı karıştırırsan değerler yanlış yere gider.
İstersen varsayılan değer de verebilirsin: __construct($name, $role = "user"). Bu durumda new User("Ayşe") çağrısı geçerlidir; $role varsayılan olarak "user" olur.
Uygulama İki parametreli Product yapıcısı
Product adında bir sınıf tanımla. Yapıcı metod __construct($name, $price) imzasıyla iki parametre alsın. Gövdede echo $name . ": " . $price . "\n"; satırıyla ürün adını ve fiyatını yazdır. Sınıfın altında $p = new Product("Kahve", 80); satırıyla bir örnek oluştur.
Örnek çözümü göster
public function __construct($name, $price). Gövdede echo $name . ": " . $price . "\n";. Çağrı: $p = new Product("Kahve", 80);.
Örnek çözüm:
<?php
// Product sınıfını tanımla ve iki parametreli yapıcı ekle
class Product {
public function __construct($name, $price) {
echo $name . ": " . $price . "\n";
}
}
$p = new Product("Kahve", 80);
Kendini test et
-
Çağrıyı tamamla
$user = ____;Cevabı göster
$user = new User("Ayşe"); -
new ile yapıcıya parametre nasıl verilir?
- new User() yapıp sonra parametre ayrı verilir
- Yapıcı parametre almaz, yalnızca özellik atanır
- new User("Ayşe") şeklinde parantez içinde
- Parametre sınıf adından önce yazılır
Cevabı göster
new User("Ayşe") şeklinde parantez içinde — Doğru. new operatörünün parantezine yazdığın değerler __construct'e sırayla geçirilir.
-
Kavramları eşle
- __construct($name)
- tek parametreli yapıcı
- new User("Ayşe")
- parametreli örnek oluşturma
- $name
- yapıcıdaki parametre değişkeni
- "Ayşe"
- çağrıdan geçen değer