PHP-তে, ইনস্ট্যান্স মেথড স্ট্যাটিক মেথডের চেয়ে প্রিয় প্যাকটিস। যেটাও কিন্তু, এটার মানে এ না যে স্ট্যাটিক মেথড উপকারী নয়, তাদের স্বতন্ত্র এবং অনন্য উদ্দেশ্য রয়েছে। এখানে PHP-তে স্ট্যাটিক এবং ইনস্ট্যান্স মেথডের তুলনা করা হলো।
এখানে নোট করুন যে ইনস্ট্যান্স মেথড সবসময় ক্লাসের অবজেক্টের সাথে সংযুক্ত থাকে যখন স্ট্যাটিক মেথড সবসময় ক্লাসের সাথে সংযুক্ত থাকে।
প্রথমে স্ট্যাটিক মেথডের কথা বলি। PHP-তে স্ট্যাটিক মেথড অন্যান্য অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজের মতোই। PHP-তে স্ট্যাটিক মেথড ব্যবহারের গুরুত্বপূর্ণ কেসগুলো। স্ট্যাটিক মেথড শুধু তখন ব্যবহার করতে হবে যখন নির্দিষ্ট ইনফরমেশন পুরো ক্লাসের জন্য স্টেডি থাকে। মূলত, স্ট্যাটিক মেথড তখন ব্যবহৃত হয় যখন সেই মেথডকে সেই ক্লাসের অবজেক্ট ছাড়া অ্যাক্সেস করতে হয়।
উদাহরণ
<?php
class Car{
static function getColor(){
return "blue";
}
}
echo (Car::getColor());
?>
আউটপুট:
blue
ব্যাখ্যা:
উদাহরণস্বরূপ, উপরের প্রোগ্রামে কিছু প্রোগ্রামার গাড়ির ইনফরমেশন তৈরি করছেন এবং সেখানে আপনার একটি Car ক্লাস রয়েছে এবং একটি getColor() ফাংশন রয়েছে যা গাড়ির রঙ ডিফাইন করে, তাই প্রতিটি অবজেক্ট যেনে getColor() ফাংশন দরকার যা Car ক্লাসের সকল অবজেক্টের জন্য একই রঙ রিটার্ন করে, তাই এই কেসে আমরা getColor() মেথডকে স্ট্যাটিক বানাতে পারি।
এখন ইনস্ট্যান্স মেথড আলোচনা করি। একটি ইনস্ট্যান্স মেথড তখন ব্যবহার করা হয় যখন অবজেক্ট তৈরি না করে মেথড কল করার কোনো উপায় নেই। এছাড়া প্রতি বার মেথড ক্লাসের প্রপার্টির সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন হলে ইনস্ট্যান্স মেথড দরকার।
উদাহরণ
উপরোক্ত কেসটি উদাহরণসহ প্রদর্শন করা যাক:
<?php
class Employee{
private $empname;
function setEmpname($empname) {
$this->empname = $empname;
}
function getEmpname() {
return $this->empname;
}
}
$obj = new Employee;
$obj->setEmpname("Alex");
echo $obj->getName();
?>
আউটপুট:
Alex
ব্যাখ্যা:
একটি Employee ক্লাস বিবেচনা করুন যাতে setEmpname() ইমপ্লয়ি নেম পড়ে এবং getEmpname() মেথড যা ইমপ্লয়ির নাম রিটার্ন করে। এই কেসে, প্রতিটি ইমপ্লয়ির নাম অন্য নাই ভিন্ন, তাই আমরা getEmpname() বা setEmpname() মেথডকে স্ট্যাটিক ডিক্লেয়ার করতে পারি না কারণ প্রতিবার এই মেথডগুলো একটি ভেরিয়েবল $empname এর সাথে ইন্টারঅ্যাক্ট করে।