⊗ppOpMgTS 87 of 107 menu

Magická metoda toString v OOP v PHP

První magická metoda, kterou budeme studovat, se jmenuje __toString. Je volána při pokusu o převedení instance třídy na řetězec. Pojďme si vysvětlit, co to znamená. Předpokládejme, že máme danou tuto třídu 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; } } ?>

Vytvořme objekt této třídy:

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

A nyní zkusme vytvořit vytvořený objekt pomocí echo:

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

Pokus o výpis objektu pomocí echo je převod na řetězec. V tomto případě PHP vypíše chybu, protože objekty se tak snadno na řetězec nepřevádějí.

Abychom odstranili chybu, musíme explicitně říci PHP, co dělat při pokusu o převedení objektu na řetězec. K tomu slouží magická metoda __toString.

Pokud v kódu naší třídy vytvoříme takovou metodu, pak výsledek této metody (tedy to, co vrátí přes return) bude řetězcovou reprezentací objektu.

Předpokládejme, že chceme, aby se při pokusu o výpis objektu pomocí echo, vypsalo jméno uživatele. To znamená, že vytvoříme metodu __toString a vrátíme v ní hodnotu vlastnosti name:

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

Ověřme:

<?php $user = new User('john', 25); echo $user; // vypíše 'john' - vše funguje! ?>

Vytvořte třídu User, ve které budou vlastnosti name a surn. Zařiďte, aby při výpisu objektu pomocí echo na obrazovku se vypsal řetězec se jménem a příjmením uživatele.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout