⊗ppOpMgTS 87 of 107 menu

Magična metoda toString u OOP u PHP

Prva magična metoda koju ćemo proučiti zove se __toString. Ona se poziva prilikom pokušaja konverzije instance klase u string. Hajde da shvatimo šta to znači. Pretpostavimo da imamo datu ovakvu klasu 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; } } ?>

Hajde da kreiramo objekat ove klase:

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

A sada pokušajmo da prikažemo kreirani objekat preko echo:

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

Pokušaj da se objekat prikaže preko echo i jeste konverzija u string. U ovom slučaju PHP će prikazati grešku, jer se prosto tako objekti ne mogu konvertovati u string.

Da bismo uklonili grešku, moramo eksplicitno reći PHP-u šta da radi prilikom pokušaja konverzije objekta u string. Za to i postoji magična metoda __toString.

Ako u kodu naše klase napravimo takvu metodu, onda će rezultat te metode (odnosno ono što ona vrati preko return) biti string reprezentacija objekta.

Pretpostavimo da želimo da se prilikom pokušaja prikaza objekta preko echo, prikaže ime korisnika. Znači napravićemo metodu __toString i vratiti u njoj vrednost svojstva name:

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

Hajde da proverimo:

<?php $user = new User('john', 25); echo $user; // prikazaće 'john' - sve radi! ?>

Napravite klasu User, u kojoj će biti svojstva name i surn. Uredite tako da prilikom prikaza objekta preko echo na ekranu bude prikazan string sa imenom i prezimenom korisnika.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij