Sobes.tech
Junior

Sinifin hansı sehrli metodlarını bilirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

PHP-də "sehirli" adlanan bir sıra xüsusi metodlar mövcuddur. Onlar sinif obyektləri ilə müəyyən hərəkətlər zamanı avtomatik olaraq çağrılır. Bəziləri:

  • __construct(): Sinifin yeni nümunəsi yaradıldıqda çağrılır. Obyekti başlatmaq üçün istifadə olunur.
  • __destruct(): Obyekt məhv edildikdə çağrılır (məsələn, skriptin icrası bitdikdə və ya açıq şəkildə unset() çağırıldıqda). Resursları sərbəst buraxmaq üçün istifadə olunur.
  • __call($name, $arguments): Əldə olunmayan (mövcud kontekstdə görünməyən) obyekt metodunu çağırmağa cəhd edildikdə çağrılır. $name çağırılan metodun adı, $arguments onun arqumentlərinin massividir.
  • __callStatic($name, $arguments): __call() ilə oxşardır, lakin əlçatan olmayan statik metodu çağırmağa cəhd edildikdə çağrılır.
  • __get($name): Əldə olunmayan obyekt xüsusiyyətini oxumağa cəhd edildikdə çağrılır. $name xüsusiyyətin adıdır.
  • __set($name, $value): Əldə olunmayan xüsusiyyətə yazmağa cəhd edildikdə çağrılır. $name xüsusiyyətin adı, $value isə təyin olunan dəyərdir.
  • __isset($name): isset() və ya empty() istifadə edilərək mövcud olmayan xüsusiyyətin olub-olmamasını yoxlamaqda çağrılır. $name xüsusiyyətin adıdır.
  • __unset($name): unset() istifadə edilərək əlçatan olmayan xüsusiyyəti silməyə cəhd edildikdə çağrılır. $name xüsusiyyətin adıdır.
  • __sleep(): Obyekt serializasiya edilməzdən əvvəl çağrılır. Serializasiya ediləcək xüsusiyyətlərin adlarını ehtiva edən massiv qaytarmalıdır.
  • __wakeup(): unserialize() ilə deserializasiya edildikdən sonra dərhal çağrılır. Bağlantıları və ya resursları bərpa etmək üçün istifadə edilə bilər.
  • __toString(): Ob'ektin sətirə çevrilməsi cəhdində çağrılır (məsələn, echo ilə çıxış zamanı). Ob'ektin sətir nümayişini qaytarmalıdır.
  • __invoke(...$args): Ob'ektin funksiya kimi istifadə edilməyə cəhdində çağrılır.
  • __set_state(array $properties): var_export() ilə ob'ektin bərpasında çağrılır. var_export() tərəfindən ixrac olunan xüsusiyyətlərin massivini alır.
  • __clone(): clone ilə ob'ektin klonlanması zamanı çağrılır. Dərin nüsxələr üçün istifadə olunur (məsələn, ob'ekt daxilində obyektlər).

Bu metodlardan ehtiyatla istifadə etmək vacibdir, çünki düzgün olmayan istifadə kodun gözlənilməz davranışlarına səbəb ola bilər.