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 এর মাধ্যমে আউটপুট করার চেষ্টা করি:

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

echo এর মাধ্যমে অবজেক্ট আউটপুট করার চেষ্টা করাই হল স্ট্রিংয়ে রূপান্তর। এই ক্ষেত্রে PHP একটি ত্রুটি দেবে, কারণ সহজভাবে অবজেক্টগুলো স্ট্রিংয়ে রূপান্তরিত হয় না।

ত্রুটি দূর করার জন্য, আমাদের স্পষ্টভাবে 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 এর মাধ্যমে অবজেক্ট আউটপুট করলে স্ক্রিনে ব্যবহারকারীর নাম এবং উপবাদ দেখায়।