Die Magiese Metode toString in OOP in PHP
Die eerste magiese metode wat ons
sal bestudeer, word __toString genoem. Dit
word opgeroep wanneer 'n poging aangewend word om 'n instansie van 'n klas
na 'n string om te skakel. Kom ons kyk wat
dit beteken. Gestel ons het die volgende klas
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;
}
}
?>
Kom ons skep 'n objek van hierdie klas:
<?php
$user = new User('john', 25);
?>
En nou probeer ons om die geskepte objek
uit te druk met echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Die poging om 'n objek met echo uit te druk
is die omskakeling na 'n string. In hierdie
geval sal PHP 'n fout gee, want voorwerpe
kan nie net so na 'n string omgeskakel word nie.
Om die fout te verwyder, moet ons
duidelik vir PHP sê wat om te doen wanneer
'n poging aangewend word om 'n objek na 'n string om te skakel. Vir
dit bestaan die magiese metode
__toString.
As ons so 'n metode in die kode van ons klas maak,
sal die resultaat van hierdie metode (dit wil sê wat
dit deur return terugstuur) die stringvoorstelling
van die objek wees.
Gestel ons wil hê dat wanneer ons probeer om die
objek met echo uit te druk, die naam van
die gebruiker vertoon word. Dan moet ons die metode __toString
maak en die waarde van die eienskap name daarin teruggee:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementeer die gespesifiseerde metode:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Kom ons toets:
<?php
$user = new User('john', 25);
echo $user; // sal 'john' druk - alles werk!
?>
Maak 'n klas User, waarin daar
eienskappe name en surn sal wees.
Sorg dat wanneer die
objek met echo uitgedruk word, 'n string
met die naam en van van die gebruiker vertoon word.