Sobes.tech
Junior

Jaké magické metody třídy znáte?

sobes.tech AI

Odpověď od AI

V PHP existuje řada speciálních metod nazývaných "magické". Jsou automaticky volány při určitých akcích s objekty tříd. Některé z nich jsou:

  • __construct(): Volá se při vytváření nové instance třídy. Používá se k inicializaci objektu.
  • __destruct(): Volá se při zničení objektu (například na konci běhu skriptu nebo při explicitním volání unset()). Používá se k uvolnění zdrojů.
  • __call($name, $arguments): Volá se při pokusu zavolat nedostupnou (neviditelnou v aktuálním kontextu) metodu objektu. $name je název volané metody, $arguments je pole jejích argumentů.
  • __callStatic($name, $arguments): Podobné jako __call(), ale volá se při pokusu zavolat nedostupnou statickou metodu.
  • __get($name): Volá se při pokusu číst nedostupnou vlastnost objektu. $name je název vlastnosti.
  • __set($name, $value): Volá se při pokusu zapisovat do nedostupné vlastnosti objektu. $name je název vlastnosti, $value je přiřazovaná hodnota.
  • __isset($name): Volá se při kontrole existence nedostupné vlastnosti pomocí isset() nebo empty(). $name je název vlastnosti.
  • __unset($name): Volá se při pokusu odstranit nedostupnou vlastnost pomocí unset(). $name je název vlastnosti.
  • __sleep(): Volá se před serializací objektu pomocí serialize(). Musí vrátit pole názvů vlastností, které mají být serializovány.
  • __wakeup(): Volá se ihned po deserializaci objektu pomocí unserialize(). Může být použit k obnovení spojení nebo zdrojů.
  • __toString(): Volá se při pokusu převést objekt na řetězec (například při výpisu pomocí echo). Musí vrátit řetězcovou reprezentaci objektu.
  • __invoke(...$args): Volá se při pokusu použít objekt jako funkci.
  • __set_state(array $properties): Volá se při obnovení objektu pomocí var_export(). Přijímá pole exportovaných vlastností.
  • __clone(): Volá se při klonování objektu pomocí clone. Používá se pro hluboké kopie (například objekty uvnitř objektu).

Je důležité tyto metody používat opatrně, protože jejich nesprávné použití může vést k nepředvídatelnému chování kódu.