PHP में OOP का जादुई तरीका 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 के through प्रिंट करने का प्रयास करते हैं:

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

echo के through वस्तु को प्रिंट करने का प्रयास ही स्ट्रिंग में रूपांतरण है। इस मामले में PHP एक त्रुटि देगा, क्योंकि बिना कुछ लगे वस्तुओं को स्ट्रिंग में नहीं बदला जा सकता।

त्रुटि को दूर करने के लिए, हमें स्पष्ट रूप से PHP को बताना होगा कि वस्तु को स्ट्रिंग में बदलने के प्रयास पर क्या करना है। इसके लिए ही जादुई तरीका __toString मौजूद है।

यदि हमारे वर्ग के कोड में ऐसी विधि बनाई जाए, तो इस विधि का परिणाम (यानी वह जो return के through लौटाता है) वस्तु का स्ट्रिंग प्रतिनिधित्व होगा।

मान लीजिए कि हम चाहते हैं कि echo के through वस्तु को प्रिंट करने के प्रयास पर, उपयोगकर्ता का नाम प्रिंट हो। इसलिए __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 के through वस्तु को प्रिंट किया जाए तो उपयोगकर्ता का नाम और उपनाम प्रिंट हो।