Магический метод toString в ООП в PHP

Методы PHP, начинающиеся с двойного подчеркивания __, называются магическим. Магия таких методов состоит в том, что они могут вызываться при совершении какого-то действия автоматически.

Первый магический метод, который мы с вами изучим, называется __toString. Он вызывается при попытке приведения экземпляра класса к строке. Давайте разберемся, что это значит. Пусть у нас дан вот такой класс User:

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Давайте создадим объект этого класса:

<?php $user = new User('john', 25); ?>

А теперь попытаемся вывести созданный объект через echo:

<?php $user = new User('john', 25); echo $user; ?>

Попытка сделать вывод объекта через echo и есть преобразование к строке. В данном случае PHP выдаст ошибку, так как просто так объекты в строку не преобразуются.

Для того, чтобы убрать ошибку, мы должны в явном виде сказать PHP, что делать при попытке преобразовать объект в строку. Для этого и существует магический метод __toString.

Если в коде нашего класса сделать такой метод, то результат этого метода (то есть то, что он вернет через return) и будет строковым представлением объекта.

Пусть мы хотим, чтобы при попытке вывести объект через echo, выводилось имя юзера. Значит сделаем метод __toString и вернем в нем значение свойства name:

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } // Реализуем указанный метод: public function __toString() { return $this->name; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Проверим:

<?php $user = new User('john', 25); echo $user; // выведет 'john' - все работает! ?>

Сделайте класс User, в котором будут следующие свойства - name, surname, patronymic. Сделайте так, чтобы при выводе объекта через echo на экран выводилось ФИО пользователя.



Чат с GPT Компилятор