PHP Professional,Laravel 5.6 Beginning to Advance এবং Zend Certified PHP Engineer (ZCPE ) Course এ সীমিত সংখ্যক আসন বাকি আছে। আগ্রহীদেরকে অতিসত্বর মাসুদ আলম স্যার এর সাথে যোগাযোগ করার জন্য অনুরোধ করা যাচ্ছে। স্যার এর মোবাইল নম্বর : ০১৭২২ ৮১ ৭৫ ৯১

PHP Object Oriented Programming পর্ব-৯: PHP Object Interfaces

Object Oriented Programming এ Interface কি?

PHP OOP interface

Object Oriented Programming এ interface এর ধারণা টা অনেকটা একজন Web Developer এর কাজের ধরণের মত। একজন Web Developer যখন কোনো একটি HTML Template বানায় প্রথমে তাকে একটি PSD ডিজাইন দেয়া হয়। এর মাধ্যমে Web Developer বুঝতে পারে তাকে HTML দিয়ে কি বানাতে হবে। অর্থাৎ এর রং , মেনু এবং বাটন এবং এর input গুলো দেখতে কেমন হবে এসবই বর্ননা করা থাকে PSD ডিজাইনে। একজন Web Developer চাইলেই কিন্তু PSD ডিজাইনকে সরাসরি ব্যবহার করতে পারেনা অথবা ব্যবহার করা সম্ভবও না। এর মানে হলো আপনাকে অবশ্যই PSD থেকে HTML এ কনভার্ট করে একে ব্যবহার করতে হবে। আর একে বলা হয় Implementation। তাহলে এখানে PSD টিই হলো পুরো Template এর একটি Interface অর্থাৎ Template টি কেমন হবে তা এখানেই বর্নানা করা হয়েছে, আর Object Oriented Programming এর interface ও একই। আপনার একটি interface থাকবে যেখানে আপনি class গুলো কি কাজ করবে তা থাকবে। কিন্তু কিভাবে কাজ করবে সেটি বলা থাকবে না। আর interface গুলোকে আপনি সরাসরি ব্যবহার করতে পারবেন না, সেজন্য অবশ্যই একে class এর উপর implement করে নিতে হবে।। abstract class আর interface প্রায় একই, শুধু পার্থক্য হচ্ছে abstract class এ property, constant, abstract এবং non-abstract সব ধরনের Method ই থাকতে পারে এবং সবগুলো Method এর Visibility public অথবা protected থাকতে পারে । কিন্তু interface এর মধ্যে শুধু method থাকতে পারবে এবং সবগুলো Method বাই ডিফল্ট abstract Method হিসেবে থাকে এবং সবগুলো Method এর Visibility অবশ্যই public হতে হবে। সাধারণত: একটা child class শুধু মাত্র একটা Parent Class থেকেই inherit করতে পারে, অর্থাৎ, একই সময়ে একাধিক class থেকে inherit করতে পারেনা। কিন্তু একটা class এর উপর একই সময়ে একাধিক interface implement করা যায়। interface এর সবগুলো Method কে সম সংখ্যক Parameter সহ যেই class এ implement করা হয়েছে সেই class এ অবশ্যই implement করতে হবে। অর্থাৎ, আপনি চাইলেই implement কৃত class এ কোন Method এর একটি Parameter যোগ বা বাদ দিতে পারবেন না । তবে default value সহ Parameter যোগ করতে পারবেন।

interface ঘোষণা করার নিয়ম কি?

interface ঘোষণা করার জন্য interface keyword এর পর interface এর নাম দিতে হয়। নিচের সিনটেক্স টি দেখুন :

<?php
interface MyInterface {
  public function aMethod();
  public function anotherMethod();
}
?>

interface কে class এর মধ্যে implement করার নিয়ম কি?

interface কে কোনো class এ implement করতে হলে class এর নামের পর implements keyword দিতে হয়, তারপর interface এর নাম গুলোকে কমা (,) দিয়ে লিখতে হয়। নিচের সিনটেক্স টি দেখুন :

<?php
class MyClass implements MyInterface1,...,MyInterfaceN {
  public function aMethod() {
    // (code to implement the method)
  }
  public function anotherMethod() {
    // (code to implement the method)
  }
}
?>

interface ব্যবহার করে এইবার একটা বাস্তব উদাহরণে আশা যাক:

উদাহরণস্বরূপ , একটি Web Forum এর কথা ধরা যাক , Forum মেম্বারদের information কে Database থেকে তুলে আনা এবং সংরক্ষণ করার জন্য একটা Member class থাকবে। এবং ফোরাম মেম্বারদের তৈরী করা টপিক গুলোকে তুলে আনা এবং সংরক্ষণ করার জন্য একটা Topic Class থাকবে। এবং এগুলো একটা আরেকটা থেকে আলাদা থাকবে , কারণ তারা প্রত্যেকে আলাদা আলাদা ভাবে কাজ করে। কিন্তু দুটি class ই Data তুলে আনা এবং সংরক্ষণ এর মত কিছু common কাজ করে।

যাইহোক, আমরা Member এবং Topic দুটি Object দিয়ে MySQL Database থেকে Data তুলে আনা এবং সংরক্ষণ এর মত কিছু common কাজগুলো করার জন্য Persistable নামে একটা interface তৈরী করব। যা Database এর common কাজগুলো করার জন্য Method গুলোকে নির্দিষ্ট করে দেবে। নিচের উদাহরণটি দেখুন :

interface Persistable {
  public function save();
  public function load();
  public function delete();
}

এখন আসুন আমরা আমাদের Member Class তৈরী করব , এবং এর মধ্যে Persistable interface কে implement করব। এর মানে হল যে Member Class এর মধ্যে অবশ্যই save(), load() এবং delete() Method গুলো implement করতে হবে। পাশাপাশি class এর নিজস্ব Method গুলো ও থাকবে। নিচের উদাহরণটি দেখুন :

<?php
class Member implements Persistable {
  private $username;
  private $location;
  private $homepage;
  public function __construct( $username, $location, $homepage ) {
    $this->username = $username;
    $this->location = $location;
    $this->homepage = $homepage;
  }
  public function getUsername() {
    return $this->username;
  }
  public function getLocation() {
    return $this->location;
  }
  public function getHomepage() {
    return $this->homepage;
  }
  public function save() {
    echo "Saving member to database<br>";
  }
  public function load() {
    echo "Loading member from database<br>";
  }
  public function delete () {
    echo "Deleting member from database<br>";
  }
}
?>

একই ভাবে Topic Class তৈরী করব , এবং এর মধ্যে Persistable interface কে implement করব। এর মানে হল এখানেও Topic Class এর মধ্যে অবশ্যই save(), load() এবং delete() Method গুলো implement করতে হবে। পাশাপাশি class এর নিজস্ব Method গুলো ও থাকবে। নিচের উদাহরণটি দেখুন :

<?php
class Topic implements Persistable {
  private $subject;
  private $author;
  private $createdTime;
  public function __construct( $subject, $author ) {
    $this->subject = $subject;
    $this->author = $author;
    $this->createdTime = time();
  }
  public function showHeader() {
    $createdTimeString = date( 'l jS M Y h:i:s A', $this->createdTime );
    $authorName = $this->author->getUsername();
    echo "$this->subject (created on $createdTimeString by $authorName)<br>";
  }
  public function save() {
    echo "Saving topic to database<br>";
  }
  public function load() {
    echo "Loading topic from database<br>";
  }
  public function delete () {
    echo "Deleting topic from database<br>";
  }
}
?>

এখন আমরা Member Object তৈরী করব getUsername() মেথড call করার জন্য। এবং Topic Object তৈরী করব showHeader() মেথড call করার জন্য। একই সাথে আমরা interface method গুলো যেমন save(), load() এবং delete() গুলো call করব, যেগুলো দুটি class এ implement করা হয়েছে।

<?php
$aMember = new Member( "Farhan", "Dhaka", 'http://w3programmers.com/' );
echo $aMember->getUsername() . " lives in " . $aMember->getLocation() ."<br>";
$aMember->save();
$aTopic = new Topic( "Futonto Golap", $aMember );
$aTopic->showHeader();
$aTopic->save();
?>

Result

interface example

এই ক্যাটাগরির অন্যান্য পোস্ট:

Masud Alam
আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ৮ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। বিশেষ ভাবে বাংলাদেশের ১০০ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ৫২ জন ই আমার হাতে জেন্ড সার্টিফাইড হয়েছে। বর্তমানে TechBeeo Software Company তে সিইও হিসাবে আছি । পাশাপাশি w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -7 Engineering কোর্স করাই। আর w3programmers.com সাইট টি আমার।
One comment on “PHP Object Oriented Programming পর্ব-৯: PHP Object Interfaces

Leave a Reply

Your email address will not be published. Required fields are marked *