PHP-তে OOP-তে ম্যাজিক মেথড toString
প্রথম ম্যাজিক মেথড যা আমরা
শিখব, তার নাম __toString। এটি
ক্লাসের একটি উদাহরণকে স্ট্রিংয়ে রূপান্তর করার চেষ্টা করলে
ডাকা হয়। আসুন বুঝতে চেষ্টা করি এর মানে কি।
ধরুন আমাদের কাছে 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;
}
}
?>
চলুন এই ক্লাসের একটি অবজেক্ট তৈরি করি:
<?php
$user = new User('john', 25);
?>
এবার চলুন তৈরি করা অবজেক্টটিকে
echo এর মাধ্যমে আউটপুট করার চেষ্টা করি:
<?php
$user = new User('john', 25);
echo $user;
?>
echo এর মাধ্যমে অবজেক্ট আউটপুট করার চেষ্টা করাই
হল স্ট্রিংয়ে রূপান্তর। এই
ক্ষেত্রে PHP একটি ত্রুটি দেবে, কারণ সহজভাবে
অবজেক্টগুলো স্ট্রিংয়ে রূপান্তরিত হয় না।
ত্রুটি দূর করার জন্য, আমাদের
স্পষ্টভাবে PHP-কে বলতে হবে যে
অবজেক্টকে স্ট্রিংয়ে রূপান্তর করার চেষ্টা করলে কি করতে হবে।
এই জন্যই ম্যাজিক মেথড
__toString এর অস্তিত্ব।
যদি আমাদের ক্লাসের কোডে এমন একটি মেথড তৈরি করা হয়,
তবে এই মেথডের ফলাফল (অর্থাৎ এটি
return এর মাধ্যমে যা ফেরত দেয়) সেটিই হবে অবজেক্টের
স্ট্রিং উপস্থাপনা।
ধরুন আমরা চাই যে
echo এর মাধ্যমে অবজেক্ট আউটপুট করার চেষ্টা করলে,
ব্যবহারকারীর নাম
আউটপুট হোক। তাহলে __toString মেথডটি
বানাব এবং এতে name প্রপার্টির মান ফেরত দেব:
<?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;
}
}
?>
পরীক্ষা করি:
<?php
$user = new User('john', 25);
echo $user; // আউটপুট দেবে 'john' - সব কাজ করছে!
?>
User ক্লাসটি তৈরি করুন, যেখানে
name এবং surn প্রপার্টি থাকবে।
এটি এমনভাবে তৈরি করুন যাতে
echo এর মাধ্যমে অবজেক্ট আউটপুট করলে স্ক্রিনে
ব্যবহারকারীর নাম এবং উপবাদ দেখায়।