PHP Object Oriented Programming
PHP Object Oriented Programming পর্ব-৩: Method Chaining
PHP তে 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;
One thought on “PHP Object Oriented Programming পর্ব-৩: Method Chaining”
Leave a Reply
You must be logged in to post a comment.
ছার static method chaining করার সময় যদি এর ভিতরে constructor and destructor use করি তাহলে যত গুলো method chaining করতেছি ততবার constructor and destructor call হচ্ছে এর কারন কি বুঝতে পারতেছি না ।