কম্পিউটার টিউটোরিয়াল

PHP-তে ইন্টারফেস (Interface) ব্যাখ্যা

এই আর্টিকেলে আমরা PHP ইন্টারফেস কীভাবে ব্যবহার করতে হয় শিখব যা PHP অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ সবচেয়ে গুরুত্বপূর্ণ স্ট্রাকচারাল প্যাটার্নের একট।

একটি ইন্টারফেস আমাদের প্রোগ্রাম তৈরি করতে দেয়, পাবলিক মেথডগুলো স্পেসিফাই করে যা একটি ক্লাস অবশ্যই ইমপ্লিমেন্ট করবে, কিন্তু সে মেথডগুলো কীভাবে ইমপ্লিমেন্ট হবে সে জটিলতা ও প্রসেস অন্তর্ভুক্ত করে না। এর মানে হলো একটি ইন্টারফেস মেথডের নাম আর আর্গুমেন্ট ডিফাইন করতে পারে, কিন্তু মেথডের কন্টেন্ট ডিফাইন করতে পারে না। ইন্টারফেস ইমপ্লিমেন্ট করা যেকোনো ক্লাস অবশ্যই ইন্টারফেস দ্বারা ডিফাইন করা সকল মেথড ইমপ্লিমেন্ট করতে হবে।

ইন্টারফেসগুলো ক্লাসের মতোই ডিক্লেয়ার করা হয়, কিন্তু শুধু interface কিওয়ার্ড class শব্দের বদলে ব্যবহার করা হয় ডিক্লেয়ারেশনে এবং কোনো মেথডের কন্টেন্ট ডিফাইন করা হয় না।

উদাহরণ

একটি ইন্টারফেস তৈরি করি এবং একটি সহজ উদাহরণ দিয়ে ইমপ্লিমেন্ট করি।

<?php 
interface MyInterface { 
    public function getName(); 
    public function getAge(); 
} 
class MyClass implements MyInterface { 
    public function getName() { 
        echo "My name A".'
'; } public function getAge(){ echo "My Age 12"; } } $obj = new MyClass; $obj->getName(); $obj->getAge(); ?>

আউটপুট:

My name A
My Age 12

ব্যাখ্যা:

এখানে আমরা MyInterface নামে একটি ইন্টারফেস ডিক্লেয়ার করেছি যার ভিতরে getName এবং getAge দুটি মেথড রয়েছে কোনো কন্টেন্ট ছাড়া। তারপর MyClass ক্লাসটি এই ইন্টারফেস ইমপ্লিমেন্ট করে এবং উপলব্ধ মেথডগুলো প্রয়োজন অনুযায়ী ব্যবহার করে।

ইন্টারফেসের কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য শিখি:

  • একটি ইন্টারফেস এমন মেথডগুলোর সমষ্টি যাদের কোনো কন্টেন্ট নেই, অর্থাৎ ইন্টারফেসের মেথডগুলো অ্যাবস্ট্রাক্ট মেথড।
  • ইন্টারফেসের সকল মেথড অবশ্যই পাবলিক ভিজিবিলিটি স্কোপে থাকতে হবে।
  • ইন্টারফেস ক্লাস থেকে ভিন্ন কারণ ক্লাস শুধু একটি ক্লাস থেকে ইনহেরিট করতে পারে কিন্তু ক্লাস এক বা একাধিক ইন্টারফেস ইমপ্লিমেন্ট করতে পারে।
  • ইন্টারফেসের ভিতরে কোনো ভেরিয়েবল থাকতে পারে না।

নোট:

ইন্টারফেস ব্যবহার করে মাল্টিপল ইনহেরিটেন্স অর্জন করা যায় কারণ একটি ক্লাস একাধিক ইন্টারফেস ইমপ্লিমেন্ট করতে পারে কিন্তু শুধু একটি ক্লাস এক্সটেন্ড করতে পারে।

উদাহরণ

একটি সহজ উদাহরণ দিয়ে এটি পরীক্ষা করি।

<?php 
interface a{ 
    public function printData(); 
} 
interface b{ 
    public function getData(); 
} 
interface c extends a, b{ 
    public function addData(); 
} 
class d implements c{ 
    public function printData(){ 
        echo "I am printing"; 
    } 
    public function getData(){ 
        echo "I am reading data"; 
    } 
    public function addData(){ 
        echo "I am adding"; 
    } 
} 
$myobj = new d(); 
$myobj->printData(); 
$myobj->addData(); 
?>

আউটপুট:

I am printing
I am adding

ব্যাখ্যা:

এখানে আমরা তিনটি ইন্টারফেস ডিক্লেয়ার করেছি: 'interface a', 'interface b', 'interface c'। এই কেসে interface c আগের দুটি ইন্টারফেস এক্সটেন্ড করছে। তারপর আমরা একটি ক্লাস ডিক্লেয়ার করেছি যা শুধু interface c ইমপ্লিমেন্ট করছে, কিন্তু যেহেতু interface c আগের দুটি ইন্টারফেস এক্সটেন্ড করছে, 'interface a', 'interface b' এবং 'interface c'-এ ডিক্লেয়ার করা সকল মেথড ক্লাস d-এ ব্যবহার করার জন্য উপলব্ধ। এভাবে আমরা ইন্টারফেস ইমপ্লিমেন্ট করে মাল্টিপল ইনহেরিটেন্স অর্জন করতে পারি।

  1. PHP-তে এনক্যাপসুলেশন (Encapsulation) ব্যাখ্যা

  2. PHP-তে অ্যাবস্ট্রাক্ট ক্লাস (Abstract Class) ব্যাখ্যা

  3. PHP-তে ফাইনাল ক্লাস ও ফাইনাল মেথড ব্যাখ্যা

  4. জাভাতে ইন্টারফেস