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 jawnieunset()). 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.$nameto nazwa wywołanej metody,$argumentsto 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.$nameto nazwa właściwości.__set($name, $value): Wywoływana przy próbie zapisu do niedostępnej właściwości obiektu.$nameto nazwa właściwości,$valueto przypisywana wartość.__isset($name): Wywoływana przy sprawdzaniu istnienia niedostępnej właściwości za pomocąisset()lubempty().$nameto nazwa właściwości.__unset($name): Wywoływana przy próbie usunięcia niedostępnej właściwości za pomocąunset().$nameto 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.