method chaining in php5
যখন আমরা ক্লাস ডিজাইন করি, আমাদের মনে রাখা দরকার এটাকে কিভাবে আমরা আরো সুন্দরভাবে তৈরি করতে পারি, যাতে অন্য ডেভলপারদেন বুঝতে সুবিধা হয়। পিএইচপি ৫ এ মেথড চেইনিং নামে নতুন একটা বৈশিষ্ট আনা হয়েছে যেটা ওওপি ধারনার নতুন সংযোজন। এটা ব্যবহার করে আমরা নিচের মত করে মেথড কল করতে পারি।

$obj->methodX()->methodY()->………….->methodZ();

পিএইচপি৪ এবং পিএইচপি৫ এর মধ্যে একটি ক্ষুদ্র পরিবর্তন হল, পিএইচপি৫ এ মেথড খেকে নিজের ক্লাসের অবজেক্ট রিটার্ন করা যায়। আমরা সাধারণত এইভাবে ক্লাস ব্যবহার করি:

<?php
class Identity {
    private $name;
    private $occupation;
    private $age;

    function setName($name) {
        $this->name = $name;
    }
    function setAge($age) {
        $this->age = $age;
    }
    function setOccupation($occupation) {
        $this->occupation = $occupation;
    }

    function showIdentity() {
        echo "Name: " . $this->name . " ";
        echo "Age : " . $this->age . "";
        echo "Occupation: " . $this->occupation . "";
    }
}

$id	=	new Identity();
$id->setName("mahmud ahsan");
$id->setAge(25);
$id->setOccupation("software engineer");
$id->showIdentity();
?>

সুতরাং আমরা আমাদের কাজের জন্য ৫ লাইনের কোড ব্যবহার করলাম। কিন্তু যদি আমরা মেথড চেইনিং পদ্ধতি ব্যবহার করি, তাহলে ৫ লাইনের পরিবর্তে, আমরা ২ লাইন কোড লিখে কাজ করতে পারি। এই ধরনের কোডের পঠনযোগ্যতা এবং সহজতা অনেক বেশি হয়। এখন নিচের কোড দেখা যাক:

<?php
class Identity {
    private $name;
    private $occupation;
    private $age;

    function setName($name) {
        $this->name = $name;
        return $this;
    }
    function setAge($age) {
        $this->age = $age;
        return $this;
    }
    function setOccupation($occupation) {
        $this->occupation = $occupation;
        return $this;
    }

    function showIdentity() {
        echo "Name: " . $this->name . "";
        echo "Age : " . $this->age . "";
        echo "Occupation: " . $this->occupation . "";
    }
}

$id	=	new Identity();
$id->setName("mahmud ahsan")->setAge(25)->setOccupation("software engineer")->showIdentity();
?>

উপরের কোডে আমরা কিছু মেথডে $this ব্যবহার করে ক্লাসের অবজেক্ট রিটার্ন করেছি, সেজন্য আমরা সহজভাবে মেথড গুলো কল করতে পেরেছি।
$id->setName(‘…’)->setAge(…) ;
জেন্ড ফ্রেমওয়ার্ক এ মেথড চেইনিং খুব বেশি ব্যবহার করা হয়।

আশা করি এই পোষ্টটা ভালো ক্লাস ডিজাইনের জন্য সবার কাজে লাগবে।