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

PHP Object Oriented Programming পর্ব-৩: Method Chaining

PHP তে Method Chaining কি?

Method Chaining

PHP তে যখন অনেক গুলো method কে একটি single instruction এর মধ্যে call করা হয়, PHP এর পরিভাষায় একে বলা হয় Method Chaining . আরেকটু সহজ ভাবে বুঝিয়ে বলি, ধরুন আপনার Person নামে একটা class আছে, যেখানে আপনার $name এবং $age নামে দুটি private property আছে। আর $name এবং $age property দুটিতে value set করার জন্য আছে যথাক্রমে setName() এবং setAge() নামক দুটি method. এবং সর্বশেষে $name এবং $age property দুটির value দেখানোর জন্য আছে getInfo() নামক method. এবং ধরুন আমাদের object টির নাম হচ্ছে $person. এখন আমরা যদি এই তিনটি method কে আলাদা আলাদা ভাবে object দিয়ে call না করে একটি single instruction এর মধ্যে ঠিক এইভাবে call করতে চাই : $person->setName(“Masud Alam”)->setAge(33)->getInfo(). PHP এর পরিভাষায় এই পদ্ধতিকে বলা হয় Method Chaining . Method Chaining এ class এর মধ্যের প্রত্যেকটি Method অর্থাৎ যেই class এর method সেই class এর object কে return করে। Method Chaining এর জন্য class এর মধ্যে যেকোনো value return এর পরিবর্তে return $this; কথাটি লিখতে হয়। চলুন পুরো ব্যাপারটা কয়েকটি উদাহরণের মাধ্যমে বুঝা যাক।

উদাহরণ ১: সাধারণ একটা class এবং তার রেজাল্ট

<?php
 class person
 {
    private $name="";
    private $age="";

    public function setName($name="")
    {
      $this->name=$name;
    }
    public function setAge($age="20")
    {
      $this->age=$age;
    }
    public function getInfo()
    {
      echo "Hello, My name is ".$this->name." and my age is ".$this->age." years.";
    }
}

$person = new person();
  $person->setName("Masud Alam");
  $person->setAge("33");
  $person->getInfo();
?>

Result

Hello, My name id Masud Alam and my age is 33 years.

পাঠক লক্ষ্য করুন আমাদের person নামক class এর $name এবং $age property দুটিতে value set করার জন্য আমরা setName() এবং setAge() method দুটিকে আলাদা আলাদা ভাবে call করি . এবং সর্বশেষে $name এবং $age property দুটির value দেখানোর জন্য আলাদা ভাবে getInfo() নামক method কে call করি।

Method Chaining এর ব্যবহার :

উপরের class টিকে Method Chaining এ convert করতে হলে আপনাকে setName() Method এবং setAge() Method এর শেষে return $this; লাইনটি যুক্ত করে দিতে হবে। নিচের উদাহরণটি দেখুন :

<?php
class person
{
  private $name="";
  private $age="";

  public function setName($name="")
  {
    $this->name=$name;  
    return $this;
  }
  public function setAge($age="20")
  {
    $this->age=$age;
    return $this;
  }

  public function getInfo()
  {
    echo "Hello, My name is ".$this->name." and my age is ".$this->age." years.";
  }
}

$person = new person();
  $person->setName("Masud Alam")->setAge("33")->getInfo();
 ?>

Result

Hello, My name id Masud Alam and my age is 33 years.

ব্যাখ্যা : লক্ষ্য করুন আমরা setName() Method এবং setAge() Method দুটির মধ্যে $this pseudo-variable টি রিটার্ন করি। আর আমরা জানি “$this” pseudo-variable টি মূলত current class এর object কে ধারণ করে। প্রথমে আসা যাক $person->setName(‘Masud Alam’) এ . এটির কাজ হচ্ছে setName() Method কে call করবে এবং Name Property তে Masud Alam নামকে value হিসেবে সেট করবে। তারপর setName() মেথড $this রিটার্ন করবে , অর্থাৎ এটি Object person কে রিটার্ন করবে।

এরপরে আশা যাক ->setAge(’33’) তে , যেহেতু আমরা আগের setName() method থেকে chain object পেয়েছি , সুতরাং সেই person object দিয়েই আমরা setAge(33) কে call করা এবং age Property তে 33 age কে value হিসেবে সেট করবে। আবার এখানেও আমরা $this রিটার্ন করায়, একই ভাবে এখানেও মূলত আমাদের Object person কে chain রিটার্ন করবে।

সর্বশেষে ->getInfo() method দিয়ে আমরা পূর্বের ধারাবাহিকতায় chain রেজাল্ট পাই।

Static Method Chaining

Static Method Chaining সাধারণ Method Chaining এর মতোই। তবে এখানে প্রত্যেকটি static Method এর মধ্যে return $this এর পরিবর্তে return new static; কথাটা লিখতে হবে। নিচের উদাহরণ দেখুন :

<?php
class oop{
    public static $val;
    
    public static function init($var){
        static::$val=$var;
        return new static;      
    }

    public static function add($var){
        static::$val+=$var;
        return new static;
    }

    public static function sub($var){
        static::$val-=$var;
        return new static;
    }

    public static function out(){
        return static::$val;
    }

}

echo oop::init(10)->add(2)->sub(5)->out(); //Result: 10+2-5=7
echo "<br>"; 
echo oop::sub(2)->out(); //Result: 7-2=5;

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

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 পর্ব-৩: Method Chaining
  1. ছার static method chaining করার সময় যদি এর ভিতরে constructor and destructor use করি তাহলে যত গুলো method chaining করতেছি ততবার constructor and destructor call হচ্ছে এর কারন কি বুঝতে পারতেছি না ।

Leave a Reply

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