Магички метод toString у ООП у PHP-у
Први магички метод који ћемо
проучити се зове __toString. Он
се позива при покушају претварања инстанце
класе у стринг. Хајде да схватимо шта
то значи. Нека нам је дата оваква класа
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;
}
}
?>
Хајде да направимо објекат ове класе:
<?php
$user = new User('john', 25);
?>
А сада ћемо покушати да испишемо направљени објекат
преко echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Покушај да се објекат испише преко echo
јесте претварање у стринг. У овом
случају PHP ће дати грешку, јер се једноставно
тако објекти не претварају у стринг.
Да би уклонили грешку, морамо
експлицитно рећи PHP-у шта да ради при
покушају да се објекат претвори у стринг. За
то постоји магички метод
__toString.
Ако у коду наше класе направимо такав метод,
онда ће резултат тог метода (то јест оно што
он врати преко return) бити стринговски
приказ објекта.
Нека желимо да при покушају исписа
објекта преко echo, исписује се име
корисника. Дакле, направићемо метод __toString
и вратити у њему вредност својства name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Имплементирамо наведени метод:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Хајде да проверимо:
<?php
$user = new User('john', 25);
echo $user; // исписаће 'john' - све ради!
?>
Направите класу User, у којој ће бити
својства name и surn.
Направите да се при
испису објекта преко echo на екран
испише стринг са именом и презименом корисника.