Магичен метод 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 на екран
да се печати стринг со името и презимето на корисникот.