Sobes.tech
Junior

Aké magické metódy triedy poznáte?

sobes.tech AI

Odpoveď od AI

V PHP existuje rad špeciálnych metód, nazývaných "magické". Sú volané automaticky pri určitých akciách s objektmi triedy. Tu je niekoľko z nich:

  • __construct(): Volá sa pri vytvorení nového inštancie triedy. Používa sa na inicializáciu objektu.
  • __destruct(): Volá sa pri zničení objektu (napríklad pri ukončení vykonávania skriptu alebo pri explicitnom volaní unset()). Používa sa na uvoľnenie zdrojov.
  • __call($name, $arguments): Volá sa pri pokuse volať nedostupnú (neviditeľnú v aktuálnom kontexte) metódu objektu. $name je meno volanej metódy, $arguments je pole jej argumentov.
  • __callStatic($name, $arguments): Je podobný __call(), ale volá sa pri pokuse volať nedostupnú statickú metódu.
  • __get($name): Volá sa pri pokuse čítať nedostupnú vlastnosť objektu. $name je meno vlastnosti.
  • __set($name, $value): Volá sa pri pokuse zapisovať do nedostupnej vlastnosti objektu. $name je meno vlastnosti, $value je priraďovaná hodnota.
  • __isset($name): Volá sa pri kontrole prítomnosti nedostupnej vlastnosti pomocou isset() alebo empty(). $name je meno vlastnosti.
  • __unset($name): Volá sa pri pokuse odstrániť nedostupnú vlastnosť pomocou unset(). $name je meno vlastnosti.
  • __sleep(): Volá sa pred serializáciou objektu pomocou serialize(). Musí vrátiť pole mien vlastností, ktoré majú byť serializované.
  • __wakeup(): Volá sa ihneď po deserializácii objektu pomocou unserialize(). Môže sa použiť na obnovenie väzieb alebo zdrojov.
  • __toString(): Volá sa pri pokuse previesť objekt na reťazec (napríklad pri výpise pomocou echo). Musí vrátiť reťazcové zobrazenie objektu.
  • __invoke(...$args): Volá sa pri pokuse použiť objekt ako funkciu.
  • __set_state(array $properties): Volá sa pri obnovení objektu pomocou var_export(). Získa pole vlastností exportovaných var_export().
  • __clone(): Volá sa pri klonovaní objektu pomocou clone. Používa sa na hlboké kopírovanie (napríklad objektov vo vnútri objektu).

Je dôležité tieto metódy používať opatrne, pretože ich nesprávne použitie môže viesť k nepredvídateľnému správaniu kódu.