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 keyUygulamalı 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
- Sınıflar, Özellikler ve Metotlar
- Yapıcılar ve Yıkıcılar
- Statik Özellikler ve Metotlar
- Sihirli Metotlara Genel Bakış