Magična metoda toString v OOP v PHP

Prva magična metoda, ki jo bomo preučili, se imenuje __toString. Pokliče se, ko poskušamo primerek razreda pretvoriti v niz. Poglejmo, kaj to pomeni. Recimo, da imamo podan razred User:

User.php<?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;
    }
  }
?>

Ustvarimo objekt tega razreda:

index.php<?php
  $user = new User('john', 25);
?>

Zdaj pa poskusimo ustvarjeni objekt izpisati s pomočjo echo:

index.php<?php
  $user = new User('john', 25);
  echo $user;
?>

Poskus izpisa objekta s pomočjo echo pomeni pretvorbo v niz. V tem primeru bo PHP vrnil napako, ker se preprosto objekti ne morejo pretvoriti v niz.

Da odstranimo napako, moramo eksplicitno povedati PHP-ju, kaj naj stori, ko poskuša objekt pretvoriti v niz. Za to obstaja magična metoda __toString.

Če v kodi našega razreda naredimo takšno metodo, bo rezultat te metode (torej tisto, kar vrne preko return) postal nizovni predstavitev objekta.

Recimo, da želimo, da se ob poskusu izpisa objekta s pomočjo echo, izpiše uporabnikovo ime. Torej naredimo metodo __toString in v njej vrnemo vrednost lastnosti name:

User.php<?php
  class User
  {
    private $name;
    private $age;
    
    public function __construct($name, $age)
    {
      $this->name = $name;
      $this->age = $age;
    }
    
    // Implementiramo navedeno metodo:
    public function __toString()
    {
      return $this->name;
    }
    
    public function getName()
    {
      return $this->name;
    }
    
    public function getAge()
    {
      return $this->age;
    }
  }
?>

Preverimo:

index.php<?php
  $user = new User('john', 25);
  echo $user; // izpiše 'john' - vse deluje!
?>
Задание 1

Naredite razred User, v katerem bodo lastnosti name in surn. Naredite tako, da se ob izpisu objekta s pomočjo echo na zaslon izpiše niz z imenom in priimkom uporabnika.