Junior
Кои магически методи на класа знаете?
sobes.tech AI
Отговор от AI
В 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. Използва се за дълбоки копия (например, обекти вътре в обект).
Важно е да използвате тези методи с повишено внимание, тъй като неправилната им употреба може да доведе до непредсказуемо поведение на кода.