Sobes.tech
Junior

Jakie magiczne metody klasy znasz?

sobes.tech AI

Odpowiedź od AI

W PHP istnieje szereg specjalnych metod nazywanych "magicznymi". Są one wywoływane automatycznie przy określonych działaniach na obiektach klasy. Oto niektóre z nich:

  • __construct(): Wywoływana przy tworzeniu nowej instancji klasy. Służy do inicjalizacji obiektu.
  • __destruct(): Wywoływana przy niszczeniu obiektu (np. na końcu wykonywania skryptu lub wywołaniu jawnie unset()). Służy do zwalniania zasobów.
  • __call($name, $arguments): Wywoływana przy próbie wywołania niedostępnej (niewidocznej w bieżącym kontekście) metody obiektu. $name to nazwa wywołanej metody, $arguments to tablica jej argumentów.
  • __callStatic($name, $arguments): Podobne do __call(), ale wywoływane przy próbie wywołania niedostępnej metody statycznej.
  • __get($name): Wywoływana przy próbie odczytu niedostępnej właściwości obiektu. $name to nazwa właściwości.
  • __set($name, $value): Wywoływana przy próbie zapisu do niedostępnej właściwości obiektu. $name to nazwa właściwości, $value to przypisywana wartość.
  • __isset($name): Wywoływana przy sprawdzaniu istnienia niedostępnej właściwości za pomocą isset() lub empty(). $name to nazwa właściwości.
  • __unset($name): Wywoływana przy próbie usunięcia niedostępnej właściwości za pomocą unset(). $name to nazwa właściwości.
  • __sleep(): Wywoływana przed serializacją obiektu za pomocą serialize(). Powinna zwracać tablicę nazw właściwości do serializacji.
  • __wakeup(): Wywoływana zaraz po deserializacji obiektu za pomocą unserialize(). Może służyć do przywracania połączeń lub zasobów.
  • __toString(): Wywoływana przy próbie konwersji obiektu na łańcuch znaków (np. przy wyświetlaniu za pomocą echo). Powinna zwracać reprezentację tekstową obiektu.
  • __invoke(...$args): Wywoływana przy próbie użycia obiektu jako funkcji.
  • __set_state(array $properties): Wywoływana przy przywracaniu obiektu za pomocą var_export(). Otrzymuje tablicę wyeksportowanych właściwości.
  • __clone(): Wywoływana przy klonowaniu obiektu za pomocą clone. Używana do głębokich kopii (np. obiektów wewnątrz obiektu).

Ważne jest ostrożne korzystanie z tych metod, ponieważ ich nieprawidłowe użycie może prowadzić do nieprzewidywalnego zachowania kodu.