Menu
Coddy logo textTech

Yapıcı Özellik Terfisi (8.0)

Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 42 / 91.

PHP 8.0, sınıfları tanımlarken gereksiz kod miktarını önemli ölçüde azaltan bir özellik olan yapıcı destekli özellik tanımlamayı kullanıma sundu. Özellikleri ayrı ayrı bildirmek ve ardından bunlara yapıcı içinde değer atamak yerine, ikisini tek adımda yapabilirsiniz.

İşte kullandığın geleneksel yaklaşım:

<?php
class Product {
    private string $name;
    private float $price;
    
    public function __construct(string $name, float $price) {
        $this->name = $name;
        $this->price = $price;
    }
    
    public function getInfo(): string {
        return $this->name . ": $" . $this->price;
    }
}

Yapıcı terfi ile erişim değiştiricisini doğrudan yapıcı parametrelerine eklersiniz:

<?php
class Product {
    public function __construct(
        private string $name,
        private float $price
    ) {}
    
    public function getInfo(): string {
        return $this->name . ": $" . $this->price;
    }
}

$product = new Product("Laptop", 999.99);
echo $product->getInfo();

Çıktı:

Laptop: $999.99

Bir oluşturucu parametresinin önüne private, protected veya public eklediğinizde PHP, özelliği otomatik olarak oluşturur ve değeri atar. Aynı oluşturucuda desteklenen ve normal parametreleri birlikte kullanabilirsiniz; ayrıca gerekirse oluşturucunun gövdesine mantık da ekleyebilirsiniz.

Önemli Nokta: Yapıcı destekli özellik tanımlama, tekrarlanan özellik bildirimlerini ve atamalarını ortadan kaldırarak sınıflarınızı daha düzenli ve okunması daha kolay hâle getirirken tam kapsülleme denetimini korur.

challenge icon

Görev

Kolay

Yapıcı tanıtımının zarafetini sergileyen bir kişi yönetim sistemi oluşturalım. Kapsüllemeyi uygun şekilde korurken gereksiz şablon kodları ortadan kaldıran temiz ve modern bir PHP sınıfı oluşturacaksın.

Kodunu iki dosya arasında düzenleyeceksin:

  • Contact.php: Tüm özellikleri doğrudan yapıcı imzasında tanımlamak için yapıcı tanıtımını kullanan bir Contact sınıfı oluştur. Kişi bilgilerin şunları içermeli:
    • private bir $name özelliği (string)
    • private bir $email özelliği (string)
    • "Not provided" varsayılan değerine sahip private bir $phone özelliği (string)
    Yapıcı tanıtımı söz dizimini kullan: ayrı özellik tanımlamalarına gerek yok! "[name] | [email] | [phone]" döndüren public bir getFullDetails() metodu ekle. Ayrıca "Contact: [name]" döndüren bir getSummary() metodu ekle.
  • main.php: Contact dosyasını dahil et. Üç girdi alacaksın: bir ad, bir e-posta ve bir telefon numarası. İki Contact örneği oluştur:
    • İlk kişi üç değerin tümünü kullanmalı (ad, e-posta ve telefon)
    • İkinci kişi yalnızca adı ve e-postayı kullanmalı (varsayılan telefon değerine güvenerek)
    Dört satır yazdır:
    • İlk kişinin tüm ayrıntıları
    • İlk kişinin özeti
    • İkinci kişinin tüm ayrıntıları
    • İkinci kişinin özeti

Yapıcı tanıtımının özellikleri tanımlamana, görünürlüklerini ayarlamana, türlerini belirtmene ve değerler atamana nasıl olanak tanıdığına dikkat et: bunların tümü tek ve okunabilir bir yapıcı imzasında gerçekleşir. Varsayılan değere sahip isteğe bağlı telefon parametresi, tanıtılan parametrelerin de tıpkı normal parametreler gibi varsayılan değerlerle sorunsuz şekilde çalıştığını gösterir.

Kendin dene

<?php

require_once 'Contact.php';

// Girdiyi oku
$name = trim(fgets(STDIN));
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));

// TODO: İlk kişiyi üç değerle oluştur (name, email, phone)

// TODO: İkinci kişiyi yalnızca name ve email ile oluştur (varsayılan phone kullan)

// TODO: İlk kişinin tüm detaylarını yazdır

// TODO: İlk kişinin özetini yazdır

// TODO: İkinci kişinin tüm detaylarını yazdır

// TODO: İkinci kişinin özetini yazdır

?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi