Junior
Siniflərin hansı sehrli metodlarını bilirsiniz?
sobes.tech Süni İntellekt
AI-dan cavab
PHP-də sehrli metodlar xüsusi metodlardır ki, müəyyən hadisələr zamanı avtomatik olaraq çağrılır. Onlar __ (ikili alt xət) ilə başlayır.
Əsas sehrli metodlar:
__construct(): Sinifin yeni nümunəsi yaradıldıqda çağrılır. Objekti başlatmaq üçün istifadə olunur.__destruct(): Objekti siləndə və ya skript bitəndə çağrılır. Resursları sərbəst buraxmaq üçün istifadə olunur.__call(string $name, array $arguments): Əlçatan olmayan və ya mövcud olmayan metodu çağırmağa cəhd edildikdə çağrılır.__callStatic(string $name, array $arguments): Statik və əlçatan olmayan metodu çağırmağa cəhd edildikdə çağrılır.__get(string $name): Əlçatan olmayan və ya mövcud olmayan xüsusiyyətə giriş cəhdində çağrılır.__set(string $name, mixed $value): Əlçatan olmayan və ya mövcud olmayan xüsusiyyətə dəyər təyin etməyə cəhd edildikdə çağrılır.__isset(string $name):isset()və yaempty()istifadə edilərkən əlçatan olmayan və ya mövcud olmayan xüsusiyyət üçün çağrılır.__unset(string $name):unset()istifadə edilərkən əlçatan olmayan və ya mövcud olmayan xüsusiyyət üçün çağrılır.__serialize(): Objektiserialize()ilə seriyalaşdırmadan əvvəl çağrılır. Seriyalaşdırma üçün xüsusiyyətlərin massivini qaytarır.__unserialize(array $data): Objektiunserialize()ilə deserializasiya edərkən çağrılır. Xüsusiyyətləri bərpa etmək üçün məlumat massivini alır.__toString(): Objekti sətir kimi işləməyə imkan verir. Objekti sətir kimi çap etməyə cəhd ediləndə çağrılır. Sətir qaytarmalıdır.__invoke(...$arguments): Objekti funksiya kimi işləməyə imkan verir. Objekti funksiya kimi çağırmağa cəhd ediləndə çağrılır.__set_state(array $properties):var_export()ilə obyekti bərpa edərkən çağrılır. Obyektin xüsusiyyətlərinin massivini alır.__debugInfo():var_dump()istifadə ediləndə çağrılır. Debug üçün məlumatların massivini qaytarmalıdır.
__construct və __toString istifadə nümunələri:
<?php
class MyClass {
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function __toString(): string {
return "Obyekt adı: " . $this->name;
}
}
$obj = new MyClass("Test");
echo $obj; // __toString() çağıracaq
__get və __set istifadə nümunələri:
<?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; // Yaxud istisna atmaq
}
}
$obj = new MyClass();
$obj->prop1 = "Dəyər 1"; // __set() çağıracaq
echo $obj->prop1; // __get() çağıracaq