Metoda Magjike toString në OOP në PHP
Metoda e parë magjike që do të
studiojmë quhet __toString. Ajo
thirret kur përpiqemi të kthejmë një shembull të
klasës në varg. Le të kuptojmë se çfarë
do të thotë kjo. Le të themi se kemi klasën e mëposhtme
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;
}
}
?>
Le të krijojmë një objekt të kësaj klase:
<?php
$user = new User('john', 25);
?>
Tani le të përpiqemi të shfaqim objektin e krijuar
përmes echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Përpjekja për të shfaqur një objekt përmes echo
është një konvertim në varg. Në këtë
rast, PHP do të shfaqë një gabim, sepse objektet
nuk mund të konvertohen në varg kaq thjesht.
Për të eliminuar gabimin, ne duhet
t'i tregojmë PHP-së në mënyrë të qartë se çfarë të bëjë kur
përpiqet të konvertojë një objekt në varg. Për
këtë qëllim ekziston metoda magjike
__toString.
Nëse krijojmë një metodë të tillë në kodin e klasës sonë,
atëherë rezultati i kësaj metode (pra ajo që
kthehet nga return) do të jetë paraqitja e objektit si varg.
Le të themi se duam që kur përpiqemi të shfaqim
objektin përmes echo, të shfaqet emri
i përdoruesit. Kështu që le të krijojmë metodën __toString
dhe të kthejmë në të vlerën e vetive name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementojmë metodën e specifikuar:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Le të kontrollojmë:
<?php
$user = new User('john', 25);
echo $user; // do të shfaqë 'john' - gjithçka funksionon!
?>
Krijo një klasë User, në të cilën do të ketë
vetitë name dhe surn.
Bëni që kur
shfaqet objekti përmes echo në ekran
të shfaqet një varg me emrin dhe mbiemrin e përdoruesit.