Maagiline meetod toString OOP-s PHP-s
Esimene maagiline meetod, mida me
õpime, kannab nime __toString. Seda
kutsutakse välja, kui proovitakse klassi
eksemplari stringiks teisendada. Mõtleme välja, mida
see tähendab. Olgu meil antud selline klass
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;
}
}
?>
Loome selle klassi objekti:
<?php
$user = new User('john', 25);
?>
Nüüd proovime loodud objekti välja printida
läbi echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Katse teha objekti väljund läbi echo
ongi teisendus stringiks. Sellel
juhul annab PHP vea, kuna lihtsalt
niimoodi ei teisendata objekte stringiks.
Selleks, et viga eemaldada, peame
selgesõnaliselt ütlema PHP-le, mida teha
kui proovitakse objekti stringiks teisendada. Selleks
ongi olemas maagiline meetod
__toString.
Kui meie klassi koodis teha selline meetod,
siis selle meetodi tulemus (see tähendab, mida
see tagastab läbi return) ongi objekti
stringiline esitus.
Oletame, et me tahame, et kui
proovitakse objekti välja printida
läbi echo, prinditaks kasutaja nimi.
Seega teeme meetodi __toString
ja tagastame selles omaduse name väärtuse:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Rakendame määratud meetodi:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Kontrollime:
<?php
$user = new User('john', 25);
echo $user; // prindib 'john' - kõik töötab!
?>
Tehke klass User, milles on
omadused name ja surn.
Tehke nii, et
objekti printimisel läbi echo ekraanile
prinditaks kasutaja ees- ja perekonnanimega string.