Den magiska metoden toString i OOP i PHP
Den första magiska metoden som vi
kommer att studera heter __toString. Den
anropas när man försöker konvertera en instans
av en klass till en sträng. Låt oss ta reda på vad
det betyder. Låt oss säga att vi har följande klass
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;
}
}
?>
Låt oss skapa ett objekt av denna klass:
<?php
$user = new User('john', 25);
?>
Och låt oss nu försöka skriva ut det skapade objektet
via echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Försöket att göra en utskrift av objektet via echo
är just en konvertering till sträng. I detta
fall kommer PHP att ge ett felmeddelande, eftersom objekt
inte kan konverteras till en sträng sådär.
För att få bort felet måste vi
uttryckligen säga till PHP vad som ska göras vid
försök att konvertera ett objekt till en sträng. För
detta finns den magiska metoden
__toString.
Om vi skapar en sådan metod i vår klasskod,
blir resultatet av denna metod (det vill säga det som
den returnerar via return) objektets strängrepresentation.
Låt oss säga att vi vill att vid försök att skriva ut
objektet via echo, så ska användarens namn
skrivas ut. Då skapar vi metoden __toString
och returnerar i den värdet på egenskapen name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementera den angivna metoden:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Låt oss testa:
<?php
$user = new User('john', 25);
echo $user; // skriver ut 'john' - allt fungerar!
?>
Skapa klassen User, där det finns
egenskaperna name och surn.
Gör så att när
objektet skrivs ut via echo på skärmen
så skrivs en sträng ut med användarens förnamn och efternamn.