Junior
PHP-də sehrli metodlar nədir?
sobes.tech Süni İntellekt
AI-dan cavab
PHP-də sehrli metodlar xüsusi metodlardır ki, müəyyən vəziyyətlərdə avtomatik olaraq çağırılırlar. Onların adları iki alt xətlə (__) ilə başlayır.
Əsas sehrli metodların siyahısı:
__construct(): Yeni obyekt yaradılarkən çağırılır.__destruct(): Obyekt məhv edilərkən çağırılır.__call($name, $arguments): Objektdə mövcud olmayan və ya əlçatan olmayan metodu çağırmağa cəhd edildikdə çağırılır.__callStatic($name, $arguments): Statik metod əlçatan olmayan və ya mövcud olmayan zaman çağırılır.__get($name): Əlçatan olmayan bir xassənin dəyərini almağa cəhd edildikdə çağırılır.__set($name, $value): Əlçatan olmayan bir xassəyə dəyər təyin etməyə cəhd edildikdə çağırılır.__isset($name):isset()və yaempty()istifadə edilərkən əlçatan olmayan xassə üzərində çağırılır.__unset($name):unset()istifadə edilərkən əlçatan olmayan xassə üzərində çağırılır.__sleep(): Serializasiyadan əvvəl çağırılır, serializasiya ediləcək xassələrin adlarını ehtiva edən massiv qaytarır.__wakeup(): Deserializasiyadan sonra çağırılır.__toString(): Objekti sətir kimi davranmağa imkan verir.__invoke($args): Skript obyekti funksiyaya çağırmağa çalışdıqda çağırılır.__set_state(array $properties):var_export()funksiyası ilə obyektin ixracı zamanı çağırılır.__clone(): Ob'ektin klonlanmasının sonunda çağırılır və klonun konfiqurasiyasını həyata keçirir.__serialize(): Serializasiyada çağırılır, serializasiya üçün məlumatların massivini qaytarır.__unserialize(array $data): Deserializasiyada çağırılır,__serialize()-dən alınan məlumatları qəbul edir.
__construct və __destruct istifadəsinə nümunələr:
<?php
class Example {
public function __construct() {
echo "Obyekt yaradıldı\n";
}
public function __destruct() {
echo "Obyekt məhv edildi\n";
}
}
$obj = new Example();
unset($obj); // Ob'ektin məcburi məhvi
?>
__get və __set istifadəsinə nümunələr:
<?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; // və ya istisna atmaq
}
}
$store = new DataStore();
$store->name = "Alice"; // __set çağırır
echo $store->name; // __get çağırır
?>