পরিচয়
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং পদ্ধতির একটি গুরুত্বপূর্ণ নীতি হল উত্তরাধিকার। এই নীতি ব্যবহার করে, দুটি শ্রেণীর মধ্যে সম্পর্ক সংজ্ঞায়িত করা যেতে পারে। পিএইচপি তার অবজেক্ট মডেলে উত্তরাধিকার সমর্থন করে।
পিএইচপি প্রসারিত ব্যবহার করে দুই শ্রেণীর মধ্যে সম্পর্ক স্থাপনের জন্য কীওয়ার্ড।
সিনট্যাক্স
class B extends A
যেখানে A হল বেস ক্লাস (এছাড়াও অভিভাবক বলা হয়) এবং B কে একটি সাবক্লাস বা চাইল্ড ক্লাস বলা হয়। শিশু শ্রেণী অভিভাবক শ্রেণীর সর্বজনীন এবং সুরক্ষিত পদ্ধতির উত্তরাধিকারী হয়। শিশু শ্রেণী উত্তরাধিকার সূত্রে প্রাপ্ত যেকোন পদ্ধতিকে পুনরায় সংজ্ঞায়িত বা ওভাররাইড করতে পারে। যদি না হয়, উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতিগুলি তাদের কার্যকারিতা বজায় রাখবে পিতামাতার শ্রেণীতে সংজ্ঞায়িত হিসাবে, যখন শিশু শ্রেণীর বস্তুর সাথে ব্যবহার করা হয়৷
অভিভাবক শ্রেণীর সংজ্ঞা অবশ্যই চাইল্ড ক্লাস সংজ্ঞার আগে থাকবে। এই ক্ষেত্রে, স্ক্রিপ্টে ক্লাস B-এর সংজ্ঞার আগে A শ্রেণীর সংজ্ঞা উপস্থিত হওয়া উচিত।
উদাহরণ
<?php class A{ //properties, constants and methods of class A } class B extends A{ //public and protected methods inherited } ?>
স্বয়ংক্রিয় লোডিং সক্ষম হলে, ক্লাস স্ক্রিপ্ট লোড করার মাধ্যমে অভিভাবক শ্রেণীর সংজ্ঞা পাওয়া যায়৷
উত্তরাধিকার উদাহরণ
নিম্নলিখিত কোড দেখায় যে শিশু শ্রেণীটি অভিভাবক শ্রেণীর সর্বজনীন এবং সুরক্ষিত সদস্যদের উত্তরাধিকারী হয়
উদাহরণ
<?php class parentclass{ public function publicmethod(){ echo "This is public method of parent class\n" ; } protected function protectedmethod(){ echo "This is protected method of parent class\n" ; } private function privatemethod(){ echo "This is private method of parent class\n" ; } } class childclass extends parentclass{ public function childmethod(){ $this->protectedmethod(); //$this->privatemethod(); //this will produce error } } $obj=new childclass(); $obj->publicmethod(); $obj->childmethod(); ?>
আউটপুট
এটি নিম্নলিখিত ফলাফল তৈরি করবে। −
This is public method of parent class This is protected method of parent class PHP Fatal error: Uncaught Error: Call to private method parentclass::privatemethod() from context 'childclass'
পদ্ধতি ওভাররাইডিং উদাহরণ
যদি প্যারেন্ট ক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত একটি পদ্ধতি চাইল্ড ক্লাসে পুনরায় সংজ্ঞায়িত করা হয়, নতুন সংজ্ঞা পূর্বের কার্যকারিতা ওভাররাইড করে। নিম্নলিখিত উদাহরণে, পাবলিক মেথড আবার শিশু শ্রেণিতে সংজ্ঞায়িত করা হয়েছে
উদাহরণ
<?php class parentclass{ public function publicmethod(){ echo "This is public method of parent class\n" ; } protected function protectedmethod(){ echo "This is protected method of parent class\n" ; } private function privatemethod(){ echo "This is private method of parent class\n" ; } } class childclass extends parentclass{ public function publicmethod(){ echo "public method of parent class is overridden in child class\n" ; } } $obj=new childclass(); $obj->publicmethod(); ?>
আউটপুট
এটি নিম্নলিখিত ফলাফল তৈরি করবে। −
public method of parent class is overridden in child class
উত্তরাধিকারী উত্তরাধিকার
পিএইচপি একাধিক উত্তরাধিকার সমর্থন করে না। তাই একটি শ্রেণী দুই বা ততোধিক শ্রেণী প্রসারিত করতে পারে না। যাইহোক, এটি নিম্নরূপ উত্তরাধিকারী উত্তরাধিকার সমর্থন করে:
উদাহরণ
<?php class A{ function test(){ echo "method in A class"; } } class B extends A{ // } class C extends B{ // } $obj=new C(); $obj->test(); ?>
আউটপুট
এটি নিম্নলিখিত ফলাফল দেখাবে
method in A class