Sobes.tech
Junior

Milliseid klassi maagilisi meetodeid te tead?

sobes.tech AI

Vastus AI-lt

PHP-s on rida spetsiaalseid meetodeid, mida nimetatakse "maagilisteks". Need kutsutakse automaatselt välja teatud toimingute ajal klassi objektidega. Siin on mõned neist:

  • __construct(): Kutsutakse, kui luuakse uus klassi eksemplar. Kasutatakse objekti initsialiseerimiseks.
  • __destruct(): Kutsutakse, kui objekt hävitatakse (näiteks skripti täitmise lõpus või otseselt unset()-i kasutades). Kasutatakse ressursside vabastamiseks.
  • __call($name, $arguments): Kutsutakse, kui üritate kutsuda juurdepääsmatut (nähtamatut praeguses kontekstis) meetodit. $name - kutsutud meetodi nimi, $arguments - selle argumentide massiiv.
  • __callStatic($name, $arguments): Sarnane __call(), kuid kutsutakse, kui üritate kutsuda juurdepääsmatut staatilist meetodit.
  • __get($name): Kutsutakse, kui üritate lugeda juurdepääsmatut omadust. $name - omaduse nimi.
  • __set($name, $value): Kutsutakse, kui üritate kirjutada juurdepääsmatu omadus. $name - omaduse nimi, $value - määratav väärtus.
  • __isset($name): Kutsutakse, kui kontrollite juurdepääsmatu omaduse olemasolu isset() või empty() abil. $name - omaduse nimi.
  • __unset($name): Kutsutakse, kui üritate eemaldada juurdepääsmatu omaduse unset() abil. $name - omaduse nimi.
  • __sleep(): Kutsutakse enne objekti serialiseerimist serialize(). Tuleb tagastada omaduste nimede massiiv, mida tuleb serialiseerida.
  • __wakeup(): Kutsutakse kohe pärast objekti deserialiseerimist unserialize(). Võib kasutada sidemete või ressursside taastamiseks.
  • __toString(): Kutsutakse, kui üritate objekti stringiks muuta (näiteks echo abil). Tuleb tagastada objekti stringiline esitlus.
  • __invoke(...$args): Kutsutakse, kui üritate kasutada objekti funktsioonina.
  • __set_state(array $properties): Kutsutakse, kui taastate objekti var_export() abil. Saab massiivi, mille var_export() on eksportinud.
  • __clone(): Kutsutakse, kui kloonite objekti clone-i abil. Kasutatakse sügavale koopiale.

Oluline on neid meetodeid kasutada ettevaatusega, kuna nende vale kasutamine võib põhjustada koodi ettearvamatut käitumist.