0Pricing
PHP Academy · Ders

Sihirli Metotlara Genel Bakış

__toString, __get, __set ve diğer PHP sihirli metotlarını öğrenin.

Sihirli Metotlara Genel Bakış, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 4. 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ş: PHP Sihirli Yöntemleri

Sihirli yöntemler, çift alt çizgiyle başlayan ve belirli durumlarda PHP motoru tarafından otomatik olarak tetiklenen özel PHP yöntemleridir. Nesne davranışına müdahale etmenizi sağlayan kancalar sunarlar.

Temel Kavramlar

PHP Sihirli Yöntemleriyle ilgili temel kavramlar:

  • __toString() — nesneyi dizeye dönüştürme
  • __get/__set/__isset/__unset — özellik erişimini yakalama
  • __call/__callStatic — yöntem çağrılarını yakalama
  • __invoke() — çağrılabilir nesne

__toString

Örnek:

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

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

$price = new Money(9.99, 'USD');
echo $price;            // 9.99 USD
echo 'Price: ' . $price; // Price: 9.99 USD

__get ve __set

Devam:

<?php
class DynamicObject {
    private array $data = [];

    public function __get(string $name): mixed {
        return $this->data[$name] ?? null;
    }

    public function __set(string $name, mixed $value): void {
        $this->data[$name] = $value;
    }
}

$obj = new DynamicObject();
$obj->name = 'Alice';
echo $obj->name;  // Alice

__isset ve __unset

Uygulama:

<?php
class Model {
    private array $attributes = [];

    public function __set(string $k, mixed $v): void { $this->attributes[$k] = $v; }
    public function __get(string $k): mixed { return $this->attributes[$k] ?? null; }
    public function __isset(string $k): bool { return isset($this->attributes[$k]); }
    public function __unset(string $k): void { unset($this->attributes[$k]); }
}

$m = new Model();
$m->email = 'a@b.com';
var_dump(isset($m->email));  // true
unset($m->email);
var_dump(isset($m->email));  // false

__call ve __callStatic

Daha derinlemesine:

<?php
class FluentQuery {
    private array $clauses = [];

    public function __call(string $name, array $args): static {
        $this->clauses[$name] = $args[0] ?? null;
        return $this;
    }

    public function toSql(): string {
        return 'SELECT * FROM '
            . ($this->clauses['from'] ?? 'unknown');
    }
}

echo (new FluentQuery())->from('users')->toSql();
// SELECT * FROM users

__invoke

İleri düzey kullanım:

<?php
class Multiplier {
    public function __construct(private float $factor) {}

    public function __invoke(float $value): float {
        return $value * $this->factor;
    }
}

$double = new Multiplier(2);
echo $double(5);   // 10
echo $double(21);  // 42

$funcs = [new Multiplier(2), new Multiplier(3)];
foreach ($funcs as $fn) echo $fn(4) . ' '; // 8 12

__clone

Gerçek dünyadan bir desen:

<?php
class Config {
    private array $data = [];

    public function set(string $k, mixed $v): self {
        $this->data[$k] = $v;
        return $this;
    }

    public function __clone() {
        // deep clone nested objects if needed
    }
}

$original = (new Config())->set('theme', 'dark');
$copy = clone $original;  // triggers __clone

__debugInfo

En iyi uygulamalar:

<?php
class ApiClient {
    public function __construct(
        private string $baseUrl,
        private string $apiKey  // sensitive!
    ) {}

    public function __debugInfo(): array {
        return [
            'baseUrl' => $this->baseUrl,
            'apiKey'  => '***' . substr($this->apiKey, -4),  // mask key
        ];
    }
}

var_dump(new ApiClient('https://api.example.com', 'secret123'));
// Shows masked key

Uygulamalı Desen

PHP Sihirli Yöntemleri için pratik bir desen kullanarak tüm konuları bir araya getirelim.

Yaygın Hatalar

PHP Sihirli Yöntemleriyle ilgili şu yaygın hatalardan kaçının:

  • Nesnelerin anlamlı biçimde yazdırılması için __toString() kullanın
  • __get/__set, vekil ve dekoratör desenlerini mümkün kılar
  • __invoke nesnelerin çağrılabilir olarak çalışmasını sağlar (array_map ile kullanışlıdır)
  • __debugInfo, hassas verilerin var_dump çıktısında görünmesini önler

Hızlı Kontrol

Bir PHP nesnesini işlev gibi çağrılabilir yapan sihirli yöntem hangisidir?

Tekrar: PHP Sihirli Yöntemleri

PHP Sihirli Yöntemleri konusunu tamamladınız. Hatırlamanız gereken temel noktalar:

  • Nesnelerin anlamlı biçimde yazdırılması için __toString() kullanın
  • __get/__set, vekil ve dekoratör desenlerini mümkün kılar
  • __invoke nesnelerin çağrılabilir olarak çalışmasını sağlar (array_map ile kullanışlıdır)
  • __debugInfo, hassas verilerin var_dump çıktısında görünmesini önler

Sıkça Sorulan Sorular

“Sihirli Metotlara Genel Bakış” dersi ücretsiz mi?

Evet — “Sihirli Metotlara Genel Bakış” 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.

“Sihirli Metotlara Genel Bakış” dersinde ne öğreneceğim?

__toString, __get, __set ve diğer PHP sihirli metotlarını öğrenin. 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 4. dersidir.

“Sihirli Metotlara Genel Bakış” 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