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; // AliceYapı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; // BobYapı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); // throwsYı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 worksUygulamalı 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
- Sınıflar, Özellikler ve Metotlar
- Yapıcılar ve Yıkıcılar
- Statik Özellikler ve Metotlar
- Sihirli Metotlara Genel Bakış