Junior
Hangi sınıf sihirli metodlarını biliyorsunuz?
sobes.tech yapay zeka
AI'dan gelen yanıt
PHP'deki sihirli metodlar, belirli olaylar sırasında otomatik olarak çağrılan özel metodlardır. __ (çift alt çizgi) ile başlarlar.
Ana sihirli metodlar:
__construct(): Sınıfın yeni bir örneği oluşturulduğunda çağrılır. Nesnenin başlatılması için kullanılır.__destruct(): Bir nesne silindiğinde veya betik sona erdiğinde çağrılır. Kaynakları serbest bırakmak için kullanılır.__call(string $name, array $arguments): Erişilemeyen veya olmayan bir yöntemi çağırmaya çalışırken çağrılır.__callStatic(string $name, array $arguments): Erişilemeyen veya olmayan statik bir yöntemi çağırmaya çalışırken çağrılır.__get(string $name): Erişilemeyen veya olmayan bir özelliğe erişmeye çalışırken çağrılır.__set(string $name, mixed $value): Erişilemeyen veya olmayan bir özelliğe değer atamaya çalışırken çağrılır.__isset(string $name):isset()veyaempty()kullanılırken çağrılır.__unset(string $name):unset()kullanılırken çağrılır.__serialize(): Nesneserialize()ile serileştirilmeden önce çağrılır. Serileştirme için özelliklerin dizisini döndürür.__unserialize(array $data): Nesneunserialize()ile serileştirildiğinde çağrılır. Özellikleri geri yüklemek için veri dizisini alır.__toString(): Nesneyi dize olarak kullanmaya izin verir. Nesneyi dize olarak yazdırmaya çalışırken çağrılır. Bir dize döndürmelidir.__invoke(...$arguments): Nesneyi fonksiyon gibi işlemeye izin verir. Nesne fonksiyon gibi çağrılmaya çalışıldığında çağrılır.__set_state(array $properties):var_export()ile nesne geri yüklenirken çağrılır. Nesnenin özelliklerinin dizisini alır.__debugInfo():var_dump()çağrıldığında çağrılır. Hata ayıklama için bilgi içeren bir dizi döndürmelidir.
__construct ve __toString kullanımına örnek:
<?php
class MyClass {
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function __toString(): string {
return "Nesne adı: " . $this->name;
}
}
$obj = new MyClass("Test");
echo $obj; // __toString() çağrılır
__get ve __set kullanımına örnek:
<?php
class MyClass {
private $data = [];
public function __set(string $name, mixed $value): void {
$this->data[$name] = $value;
}
public function __get(string $name): mixed {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // veya istisna fırlat
}
}
$obj = new MyClass();
$obj->prop1 = "Değer 1"; // __set() çağrılır
echo $obj->prop1; // __get() çağrılır