PHP да ООП да __toString магик методаси

Биз ўрганадиган биринчи магик метода __toString деб аталади. У класс нусхасини сатрга айлантиришга уринилганда чақирилади. Бу нимани англатади, биламиз. Бизда 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;
    }
  }
?>

Келгинг, бу класснинг объектини ярайлик:

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

Энди яратилган объектни echo орқали чиқариб кўришга уринайлик:

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

echo орқали объектни чиқаришга уриниш анан сатрга айлантиришдир. Бу ҳолатда PHP хато берadi, чунки объектлар ўзи-ўзича сатрга айланмайди.

Хатолиқни йўқотиш учун биз PHP га объектни сатрга айлантиришга уринилганда нима қилиш керэклигини аниқ айтишимиз керак. Ана шу учун __toString магик методаси мавжуд.

Агар бизнинг класс кодимизда бундай метода қилсак, у ҳолда у методанинг натижаси (яъни return орқали қайтарадиган нарса) объектнинг сатр кориниши бўлади.

Фароз қилайлик, биз echo орқали объектни чиқарганда, фойдаланувчининг исми чиқадишини истаймиз. Демак, __toString методасини яратиб, унинг ичида name хусусиятининг қийматини қайтарамиз:

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

Текширамиз:

index.php<?php
  $user = new User('john', 25);
  echo $user; // 'john' ни чиқаради - ҳаммаси ишлайди!
?>
Задание 1

User классни яранг, унинг ичида name ва surn хусусиятлари бўлсин. Объект echo орқали чиқарилганда, экранга фойдаланувчининг исми ва фамиляси билан сатр чиқадиган қилинг.