НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗ppOpMgTS 87 of 107 menu

Магический метод toString в ООП в 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 и surn. Сделайте так, чтобы при выводе объекта через echo на экран выводилась строка с именем и фамилий пользователя.

Русский
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить