В этой заключительной части учебника про ООП, будет рассказываться что такое в PHP перегрузка или магические методы, что это такое и как с этим работать, было можно конечно пораньше об этом рассказать, но решил напоследок.
Что такое перегрузка:
В PHP перегрузка это не много другое, не то что в других языках программирования, поэтому иногда называют просто магические методы.
Перегрузка или магические методы нужны что бы была возможность динамически создавать
свойства и методы, к примеру, как отображать свойство при выводе его на экран.
Как работать с перегрузкой в PHP:
Теперь посмотрим как работать с перегрузками, но перед этим надо посмотреть основные магические методы.
Магические методы PHP:
- __set() — будет выполнен при записи данных в недоступные или несуществующие свойств;
- __get() — будет выполнен при чтении данных из недоступных или несуществующих свойств;
Это два основных метода которые придётся использовать для перегрузки.
Использование магических методов:
Посмотрим как это работает, для этого создадим класс User
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // Создание класса User class User { // Создание приватного свойства private $name; // Конструктор класса public function __construct ($name) { $this -> name = $name; } // Магический метод для изменения свойства public function __set ($name, $value) { $this -> $name = $value; echo $name . ' теперь равно ' . $value . '</br>'; } // Магический метод для получения public function __get ($name) { return $this -> $name; } } |
Давайте разберём код, создаём класс User
, в нём создаём конструктор, дальше идёт самое интересное, это магические методы.
Потом создаём магический метод __set(), самое интересно то, какие параметры мы передаём, первый параметр $name
равен названию свойства которое мы хотим изменить, а $value
, это то на какое значение мы хотим изменить, внутри самого метода сначала обращаемся к свойству которое передалось в параметре $name
, и присваиваем значение из $value
. Выводим на экран что бы убедится в изменение свойства.
Точно также создаём магический метод __get(), который просто возвращает свойство, в параметрах только $name
, он имеет название свойства которое мы хотим получить, возвращаем через return
свойство, но вместо названия свойства пишем параметр $name
.
Дальше пошёл код с работой объекта класса User
.
1 2 3 4 5 | $user = new User('Дима'); echo $user -> name . '</br>'; $user -> name = 'Вася'; echo $user -> name; |
Вот результат выполнения программы.
Как можете заметить, мы сначала присваиваем имя Дима, потом меняем свойство на Вася и выводим опять имя, видим что оно изменилось на Вася.
Но самое главное, что для этого мы не использовали ни одного лишнего метода, работа проводится как с переменными или массивами, что очень хорошо и удобно.
Другие магические методы:
- __sleep() — Метод вызывается, когда объект подвергается сериализации при помощи функции
serialize()
; - __wakeup() — Метод вызывается при восстановлении объекта при помощи функции
unserialize()
; - __toString() — Метод позволяет классу решать, как он должен реагировать при преобразовании в строку;
- __clone() — Метод используется при клонирование объекта;
- __isset() — Метод будет выполнен при использовании
isset()
илиempty()
; - __unset() — Метод будет выполнен при вызове
unset()
на недоступном;
Вывод:
Здесь было рассказано что такое перегрузка в PHP или магические методы, теперь вы всё самое важно знаете про ООП в PHP, если вы, конечно, прочитали до этого весь остальной учебник.