Sobes.tech
Junior

Koje magične metode klase poznajete?

sobes.tech АИ

Одговор од АИ

У PHP-у постоји низ посебних метода које се називају "магичне". Оне се аутоматски позивају при одређеним акцијама са објектима класе. Ево неких од њих:

  • __construct(): Позива се приликом креирања новог примерка класе. Користи се за иницијализацију објекта.
  • __destruct(): Позива се приликом уништавања објекта (на пример, на крају извршавања скрипте или при јасном позиву unset()). Користи се за ослобађање ресурса.
  • __call($name, $arguments): Позива се када се покуша позвати недоступна (невидљива у тренутном контексту) метода објекта. $name је име позване методе, $arguments је низ њених аргумената.
  • __callStatic($name, $arguments): Слично као __call(), али се позива када се покуша позвати недоступан статички метод.
  • __get($name): Позива се када се покуша читати недоступна својство објекта. $name је име својства.
  • __set($name, $value): Позива се када се покуша уписати у недоступно својство објекта. $name је име својства, $value је вредност која се додељује.
  • __isset($name): Позива се приликом провере да ли недоступно својство постоји помоћу isset() или empty(). $name је име својства.
  • __unset($name): Позива се када се покуша уклонити недоступно својство помоћу unset(). $name је име својства.
  • __sleep(): Позива се пре серијализације објекта помоћу serialize(). Треба да врати низ имена својстава која треба серијализовати.
  • __wakeup(): Позива се одмах након десериализације објекта помоћу unserialize(). Може се користити за обнову веза или ресурса.
  • __toString(): Позива се када се покуша претворити објекат у низ (на пример, при испису помоћу echo). Треба да врати низу представљање објекта.
  • __invoke(...$args): Позива се када се покуша користити објекат као функција.
  • __set_state(array $properties): Позива се приликом обнове објекта помоћу var_export(). Добија низ експортираних својстава.
  • __clone(): Позива се приликом клонирања објекта помоћу clone. Користи се за дубоке копије (на пример, објекти унутар објекта).

Важно је користити ове методе са опрезом, јер њихова неправилна употреба може довести до непредвидивог понашања кода.