PHP Object Oriented Programming পর্ব-৮: Abstract Class and Methods

Last Updated on April 1, 2023 by Masud Alam

PHP তে Abstract Class কি?

PHP Abstract Class

Abstract Class and Methods Abstract Class and Methods

PHP তে Abstract Class হচ্ছে এক ধরনের বিশেষ class যার থেকে কোনো Object instantiate বা তৈরী করা যাবেনা। কিন্তু Class গুলো থেকে child class তৈরী বা inherit করা যাবে। কোনো class কে abstract ঘোষণা করতে হলে class keyword এর সামনে abstract keyword টি দিতে হয়। “যেমন- abstract class className{....}” . কোন class এর মধ্যে যদি এক বা একাধিক abstract Method থাকে, সেটিকে অবশ্যই Abstract class হিসেবে Declare করতে হবে । তবে Abstract Class এ abstract এবং Non-Abstract দুই ধরনের মেথডই থাকতে পারে।

https://w3programmers.com/bangla/php-course/

PHP তে Abstract Method কি?

PHP তে Abstract Method একধরণের বিশেষ Class Method যার বডিতে কোনো code define করা থাকেনা শুধু Method Signature থাকে , অর্থাৎ শুধুমাত্র Method এর নাম এবং Parameter সমূহ Declare করা থাকে। কোনো Method কে abstract ঘোষণা করতে হলে function keyword এর সামনে abstract keyword টি দিতে হয়। তারপর perentheses “( )” তারপর semicolon ” ; ” দিতে হয়। “যেমন- abstract function functionName();“. Abstract Method গুলোকে সম সংখ্যক Parameter সহ child class এ অবশ্যই implement করতে হবে। অর্থাৎ, আপনি চাইলেই child class এ কোন Method এর একটি Parameter যোগ বা বাদ দিতে পারবেন না । তবে default value সহ Parameter যোগ করতে পারবেন। Abstract Method গুলোর Visibility একই অথবা বেশি Open রাখতে হবে অর্থাৎ protected থাকলে protected অথবা public রাখতে হবে। abstract method কে private ঘোষণা করা যায়না।

এবার চলুন কয়েকটা উদাহরণ দেখা যাক।

উদাহরণ ১:

<?php
abstract class AbstractClass{
    // Our abstract method only needs to define the required arguments
    abstract protected function getName($name);
    }

class childClass extends AbstractClass{
    public function getName($name) {
        return 'Hi '.$name.' !';
    }
}

$class = new childClass;
echo $class->getName('Shahriar'), '\n';
?>

Result:

Hi! Shahriar

উদাহরণ ২:

এবার আমরা দেখবো সম সংখ্যক Parameter ছাড়া child class এ implement করলে কি সমস্যা হতে পারে।

<?php
abstract class AbstractClass{
    // Our abstract method only needs to define the required arguments
    abstract protected function getName($name);
    }

class childClass extends AbstractClass{
    public function getName($name,$prefix) {
        return 'Hi'.$name.' !';
    }
}

$class = new childClass;
echo $class->getName('Shahriar', 'Mr. '), '\n';
?>

Result:

Fatal error:  Declaration of childClass::getName($name, $prefix) must be compatible with AbstractClass::getName($name) in [...][...]on line 11

ব্যাখ্যা: লক্ষ্য করুন parent class এ getName Method এ Parameter ছিল একটি , এখন child class এ কোনো default value ছাড়া অতিরিক্ত Parameter দেয়াই PHP একটি fatal error দেখাচ্ছে।

https://w3programmers.com/bangla/php-course/

উদাহরণ ৩:

এবার আমরা দেখবো সম সংখ্যক Parameter ছাড়া child class এ implement করার পদ্ধতি ।

<?php
abstract class AbstractClass{
    // Our abstract method only needs to define the required arguments
    abstract protected function getName($name);
    }

class childClass extends AbstractClass{
    public function getName($name,$prefix='Mr. ') {
        return 'Hi '.$prefix.$name.' !';
    }
}

$class = new childClass;
echo $class->getName('Shahriar'), '\n';
?>

Result:

Hi Mr. Shahriar !

ব্যাখ্যা: লক্ষ্য করুন parent class এ getName Method এ Parameter ছিল একটি , এখন child class এ default value সহ অতিরিক্ত Parameter দেওয়ার পরও PHP কোনো error ছাড়াই ফলাফল দেখাচ্ছে।

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৪ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। ভাবে বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০এরও অধিক ছাত্র । বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance এবং Mastering DevOps Engineering কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

One thought on “PHP Object Oriented Programming পর্ব-৮: Abstract Class and Methods

  1. মাশাঅাল্লাহ ! সুন্দর উদ্যোগ । অল্প কথায় সাবলীলভাবে পিএইচপি বুঝাচ্ছেন । অাপনার এই উদ্যোগ প্রশংসনীয় ।

Leave a Reply