0Pricing
PHP Academy · Ders

Yapıcılar ve Yıkıcılar

__construct ile nesneleri başlatın ve __destruct ile temizleyin.

Yapıcılar ve Yıkıcılar, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.

Giriş: Yapıcılar ve Yıkıcılar

Yeni bir nesne oluşturulduğunda __construct() yöntemi otomatik olarak çalışır. Nesne çöp toplayıcı tarafından toplandığında __destruct() yöntemi çalışır. PHP 8 ile yapıcıda özellik tanımlama özelliği kullanıma sunulmuştur.

Temel Kavramlar

Yapıcılar ve Yıkıcılarla ilgili temel kavramlar:

  • __construct() nesneyi başlatır
  • Yapıcıda özellik tanımlama kodu kısaltır
  • Temizlik işlemleri için __destruct() kullanılır (dosya tanıtıcıları, bağlantılar)
  • Üst sınıf yapıcısı parent::__construct() ile çağrılır

Temel Yapıcı

Örnek:

<?php
class User {
    public string $name;
    public string $email;

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

$user = new User('Alice', 'alice@example.com');
echo $user->name; // Alice

Yapıcıda Özellik Tanımlama (PHP 8)

Devam:

<?php
class User {
    // Shorthand: declare and assign in one go
    public function __construct(
        public readonly string $name,
        public readonly string $email,
        private int $loginCount = 0,
    ) {}
}

$u = new User('Bob', 'bob@test.com');
echo $u->name;  // Bob

Yapıcıda Doğrulama

Uygulama:

<?php
class PositiveInt {
    public function __construct(private int $value) {
        if ($value <= 0) {
            throw new InvalidArgumentException(
                "Value must be positive, got $value"
            );
        }
    }
    public function get(): int { return $this->value; }
}

$n = new PositiveInt(5);  // OK
// new PositiveInt(-1);   // throws

Yıkıcı

Daha derinlemesine:

<?php
class FileLogger {
    private mixed $handle;

    public function __construct(string $path) {
        $this->handle = fopen($path, 'a');
    }

    public function log(string $msg): void {
        fwrite($this->handle, date('c') . ' ' . $msg . PHP_EOL);
    }

    public function __destruct() {
        if ($this->handle) fclose($this->handle);
        echo 'File handle released';
    }
}

Adlandırılmış Yapıcı Deseni

İleri düzey kullanım:

<?php
class Money {
    private function __construct(
        private float  $amount,
        private string $currency
    ) {}

    public static function usd(float $a): self { return new self($a, 'USD'); }
    public static function eur(float $a): self { return new self($a, 'EUR'); }

    public function format(): string {
        return number_format($this->amount, 2) . ' ' . $this->currency;
    }
}

echo Money::usd(9.99)->format(); // 9.99 USD

Üst Sınıf Yapıcısı

Gerçek dünyadan bir desen:

<?php
class Animal {
    public function __construct(
        protected string $name,
        protected string $sound
    ) {}
}

class Dog extends Animal {
    public function __construct(string $name) {
        parent::__construct($name, 'Woof');
    }
    public function speak(): string {
        return "{$this->name} says {$this->sound}!";
    }
}

echo (new Dog('Rex'))->speak();  // Rex says Woof!

Yapıcılarda Geç Bağlanan Statik Çağrılar

En iyi uygulamalar:

<?php
class Base {
    public static function create(): static {
        return new static();  // 'static' resolves to calling class
    }
}

class Child extends Base {}

$base  = Base::create();   // Base object
$child = Child::create();  // Child object — static binding works

Uygulamalı Desen

Yapıcılar ve Yıkıcılar için pratik bir desen kullanarak tüm konuları bir araya getirelim.

Yaygın Hatalar

Yapıcılar ve Yıkıcılarla ilgili şu yaygın hatalardan kaçının:

  • Bir sınıfı genişletirken her zaman parent::__construct() çağrısını yapın
  • Gereksiz başlangıç kodunu azaltmak için PHP 8 ve sonraki sürümlerde yapıcıda özellik tanımlamayı kullanın
  • Yıkıcının belirli bir zamanda çalışacağı garanti edilmez
  • Birden fazla __construct() aşırı yüklemesi yerine adlandırılmış yapıcıları tercih edin

Hızlı Kontrol

PHP 8'de yapıcıda özellik tanımlama nedir?

Tekrar: Yapıcılar ve Yıkıcılar

Yapıcılar ve Yıkıcılar konusunu tamamladınız. Hatırlamanız gereken temel noktalar:

  • Bir sınıfı genişletirken her zaman parent::__construct() çağrısını yapın
  • Gereksiz başlangıç kodunu azaltmak için PHP 8 ve sonraki sürümlerde yapıcıda özellik tanımlamayı kullanın
  • Yıkıcının belirli bir zamanda çalışacağı garanti edilmez
  • Birden fazla __construct() aşırı yüklemesi yerine adlandırılmış yapıcıları tercih edin

Sıkça Sorulan Sorular

“Yapıcılar ve Yıkıcılar” dersi ücretsiz mi?

Evet — “Yapıcılar ve Yıkıcılar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.

“Yapıcılar ve Yıkıcılar” dersinde ne öğreneceğim?

__construct ile nesneleri başlatın ve __destruct ile temizleyin. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

PHP Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Yapıcılar ve Yıkıcılar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Sınıflar, Özellikler ve Metotlar
  2. Yapıcılar ve Yıkıcılar
  3. Statik Özellikler ve Metotlar
  4. Sihirli Metotlara Genel Bakış
← PHP Academy Sayfasına Dön