Junior
PHP'de sihirli metodlar nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
PHP'deki sihirli metodlar, belirli durumlarda otomatik olarak çağrılan özel metodlardır. İsimleri iki alt çizgi (__) ile başlar.
Ana sihirli metodların listesi:
__construct(): Yeni bir nesne oluşturulurken çağrılır.__destruct(): Bir nesne yok edilirken çağrılır.__call($name, $arguments): Nesnenin erişilemeyen veya mevcut olmayan bir metodunu çağırmaya çalışırken çağrılır.__callStatic($name, $arguments): Erişilemeyen veya mevcut olmayan statik bir metod çağırmaya çalışırken çağrılır.__get($name): Erişilemeyen bir özelliğin değerini almaya çalışırken çağrılır.__set($name, $value): Erişilemeyen bir özelliğin değerini ayarlamaya çalışırken çağrılır.__isset($name):isset()veyaempty()kullanılırken erişilemeyen bir özellik üzerinde çağrılır.__unset($name):unset()kullanılırken erişilemeyen bir özellik üzerinde çağrılır.__sleep(): Serileştirmeden önce çağrılır, serileştirilecek özelliklerin isimlerini içeren bir dizi döner.__wakeup(): Serileştirmeden sonra çağrılır.__toString(): Nesnenin string gibi davranmasını sağlar.__invoke($args): Nesne fonksiyon gibi çağrılmaya çalışıldığında çağrılır.__set_state(array $properties):var_export()fonksiyonu ile nesne dışa aktarılırken çağrılır.__clone(): Nesne klonlandıktan sonra çağrılır.__serialize(): Serileştirme sırasında çağrılır, verilerin dizisini döner.__unserialize(array $data): Deserileştirme sırasında çağrılır,__serialize()ile alınan verileri alır.
__construct ve __destruct kullanımına örnek:
<?php
class Example {
public function __construct() {
echo "Nesne oluşturuldu\n";
}
public function __destruct() {
echo "Nesne yok edildi\n";
}
}
$obj = new Example();
unset($obj); // Nesneyi zorunlu olarak yok eder
?>
__get ve __set kullanımına örnek:
<?php
class DataStore {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // Veya istisna fırlat
}
}
$store = new DataStore();
$store->name = "Alice"; // __set çağrılır
echo $store->name; // __get çağrılır
?>