⊗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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне