instanceof অপারেটর এবং PHP-তে OOP-তে ইনহেরিটেন্স
আসুন instanceof অপারেটর ব্যবহার করার সময় ইনহেরিটেন্সের বৈশিষ্ট্যগুলি বুঝে নেওয়া যাক। ধরুন আমাদের একটি প্যারেন্ট ক্লাস এবং একটি চাইল্ড ক্লাস আছে:
<?php
// প্যারেন্ট ক্লাস:
class ParentClass
{
}
// চাইল্ড ক্লাস:
class ChildClass extends ParentClass
{
}
?>
চাইল্ড ক্লাসের একটি অবজেক্ট তৈরি করা যাক:
<?php
$obj = new ChildClass;
?>
এখন instanceof ব্যবহার করে পরীক্ষা করা যাক, আমাদের অবজেক্টটি ParentClass ক্লাসের এবং ChildClass ক্লাসের কিনা:
<?php
var_dump($obj instanceof ChildClass); // true প্রিন্ট করবে
var_dump($obj instanceof ParentClass); // সেও true প্রিন্ট করবে
?>
আপনি উদাহরণ থেকে দেখতে পাচ্ছেন - instanceof অপারেটর প্যারেন্ট এবং চাইল্ড ক্লাসগুলির মধ্যে পার্থক্য করে না।
কনফিউজ হবেন না - যদি অবজেক্টটি সত্যিই প্যারেন্ট ক্লাসের হয় তবে, অবশ্যই, চাইল্ড ক্লাসের পরীক্ষা false রিটার্ন করবে:
<?php
$obj = new ParentClass; // প্যারেন্ট ক্লাসের অবজেক্ট
var_dump($obj instanceof ParentClass); // true প্রিন্ট করবে
var_dump($obj instanceof ChildClass); // false প্রিন্ট করবে
?>
একটি User ক্লাস তৈরি করুন যার পাবলিক প্রপার্টি name এবং surname আছে।
একটি Employee ক্লাস তৈরি করুন, যা User ক্লাস থেকে ইনহেরিট করবে এবং salary প্রপার্টি অ্যাড করবে।
একটি City ক্লাস তৈরি করুন যার পাবলিক প্রপার্টি name এবং population আছে।
User ক্লাসের 3টি অবজেক্ট, Employee ক্লাসের 3টি অবজেক্ট, City ক্লাসের 3টি অবজেক্ট তৈরি করুন, এবং যেকোনো ক্রমে সেগুলিকে $arr অ্যারেতে লিখুন।
$arr অ্যারেটি লুপ করে ঘুরুন এবং সেইসব অবজেক্টের name প্রপার্টির একটি কলাম স্ক্রিনে প্রিন্ট করুন যেগুলো User ক্লাস বা সেই ক্লাসের চাইল্ড ক্লাসের অন্তর্গত।
$arr অ্যারেটি লুপ করে ঘুরুন এবং সেইসব অবজেক্টের name প্রপার্টির একটি কলাম স্ক্রিনে প্রিন্ট করুন যেগুলো User ক্লাস বা সেই ক্লাসের চাইল্ড ক্লাসের অন্তর্গত নয়।
$arr অ্যারেটি লুপ করে ঘুরুন এবং সেইসব অবজেক্টের name প্রপার্টির একটি কলাম স্ক্রিনে প্রিন্ট করুন যেগুলো অবজেক্টিভভাবে User ক্লাসের অন্তর্গত, অর্থাৎ City ক্লাস বা Employee ক্লাসের নয়।