A varázslatos toString metódus az OOP-ban PHP-ben
Az első varázslatos metódus, amelyet
megismerünk, a __toString nevet viseli.
Akkor hívódik meg, amikor egy osztály példányát
karakterlánccá próbáljuk alakítani. Nézzük meg,
mit is jelent ez. Tegyük fel, hogy adott a
következő User osztály:
<?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;
}
}
?>
Hozzuk létre az osztály egy objektumát:
<?php
$user = new User('john', 25);
?>
Most pedig próbáljuk meg kiírni a létrehozott objektumot
a echo segítségével:
<?php
$user = new User('john', 25);
echo $user;
?>
Az objektum echo-val való kiírásának
kísérlete maga a karakterlánccá alakítás. Ebben
az esetben a PHP hibaüzenetet fog kiadni, mivel
egyszerűen az objektumok nem alakíthatók át így
karakterlánccá.
Ahhoz, hogy a hibát megszüntessük, egyértelműen
meg kell mondanunk a PHP-nak, mit tegyen, amikor
egy objektumot karakterlánccá próbálnak alakítani.
Erre szolgál a __toString varázslatos metódus.
Ha az osztályunk kódjában létrehozunk egy ilyen metódust,
akkor ennek a metódusnak az eredménye (vagyis amit
a return-nel visszaad) lesz az objektum
karakterlánc reprezentációja.
Tegyük fel, hogy azt szeretnénk, hogy amikor az
objektumot echo-val próbáljuk kiírni,
a felhasználó neve jelenjen meg. Ezért készítsük el
a __toString metódust és adjuk vissza benne
a name tulajdonság értékét:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Megvalósítjuk a megadott metódust:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Teszteljük:
<?php
$user = new User('john', 25);
echo $user; // kiírja 'john' - minden működik!
?>
Készítsen egy User osztályt, amelyben
name és surn tulajdonságok
lesznek.
Állítsa be úgy, hogy amikor az
objektumot echo-val írjuk ki a képernyőre,
a felhasználó keresztneve és vezetékneve jelenjen meg.