CodeBlanks Logo Icon CodeBlanks

Named arguments

PHP kursu · Uzman · Ders 39/54

Parametre adıyla değer geçen named arguments kullanımını öğrenirsin.

Named arguments (isimli argümanlar)

PHP 8.0 ile gelen named arguments, değeri parametre adıyla geçmeni sağlar: send_email(to: "alex@example.com", subject: "Merhaba").

Varsayılan değerli parametreleri atlayabilirsin: send_email(to: $x, html: true) gibi. subject atlanır, kendi varsayılanını kullanır.

Ad verdiğin için çağrı sırası önemsizleşir; çağrı kendini belgeler. Uzun parametre listelerinde özellikle faydalıdır.

Nullsafe operator (?->)

PHP 8.0 ile gelen ?-> operatörü, sol taraf null ise hata fırlatmak yerine null döner. Zincirleme erişimde güvenlik sağlar.

Örneğin $user?->profile?->avatar: $user veya profile null ise tüm ifade null olur; NullPointerException fırlatmaz.

Yalnızca okuma için kullanılır; atama yapamazsın. ?? ile birleştirip varsayılan değer de verebilirsin.

Uygulama Nullsafe ile avatar getir

user_avatar(?User $u): string yöntemini tanımla. $u?->profile?->avatar zinciriyle avatar al; yoksa ?? "default.png" ile varsayılanı döndür.

Aşağıdaki çağrı user: null ile yapılmalı ve default.png çıktısını vermeli.

Örnek çözümü göster
class Profile {
  public string $avatar = "me.png";
}

class User {
  public ?Profile $profile = null;
}

function user_avatar(?User $u): string {
  return $u?->profile?->avatar ?? "default.png";
}

echo user_avatar(user: null);

Kendini test et

  1. Named arguments kavramları

    name:
    parametre adıyla geçiş
    ?->
    null güvenli erişim
    skip
    varsayılanlı parametre atlanır
    by name
    sıra önemsizleşir
  2. Nullsafe operatörü yaz

    $avatar = $user____->profile->avatar;
    
    Cevabı göster
    $avatar = $user?->->profile->avatar;
    
  3. HTML modunu açmak için doğru çağrı?

    function send_email(string $to, string $subject = "Hi", bool $html = false) {}
    • send_email(to: "a@b.com", html: true)
    • send_email("a@b.com", true)
    • send_email(to: "a@b.com",, true)
    • send_email(html: true)
    Cevabı göster

    send_email(to: "a@b.com", html: true) — Doğru. subject atlanır ve varsayılanını kullanır; html: true ile HTML modu açılır.

Uzman bölümündeki tüm dersler