Maģiskā metode toString OOP PHP
Pirmā maģiskā metode, kuru mēs
izpētīsim, saucas __toString. Tā
tiek izsaukta, mēģinot pārvērst klases
instanci par virkni. Padomāsim, ko
tas nozīmē. Pieņemsim, ka mums ir dota šāda klase
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;
}
}
?>
Izveidosim šīs klases objektu:
<?php
$user = new User('john', 25);
?>
Un tagad mēģināsim izvadīt izveidoto objektu
caur echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Mēģinājums izvadīt objektu caur echo
ir pārvēršana par virkni. Šajā
gadījumā PHP izvadīs kļūdu, jo vienkārši
tādi objekti par virkni netiek pārveidoti.
Lai atbrīvotos no kļūdas, mums
skaidri jānorāda PHP, ko darīt,
mēģinot pārveidot objektu par virkni. Šim nolūkam
eksistē maģiskā metode
__toString.
Ja mūsu koda klasē izveido šādu metodi,
tad šīs metodes rezultāts (tas, ko
tā atgriezīs caur return) būs objekta
virknes reprezentācija.
Pieņemsim, ka mēs vēlamies, lai mēģinot izvadīt
objektu caur echo, tiktu izvadīts lietotāja
vārds. Tad izveidosim metodi __toString
un atgriezīsim tajā īpašības name vērtību:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Realizēsim norādīto metodi:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Pārbaudīsim:
<?php
$user = new User('john', 25);
echo $user; // izvadīs 'john' - viss strādā!
?>
Izveidojiet klasi User, kurā būs
īpašības name un surn.
Iestatiet to tā, lai,
izvadot objektu caur echo uz ekrāna,
tiktu izvadīta virkne ar lietotāja vārdu un uzvārdu.