পরিচয়
ওভারলোডিং এর ব্যাখ্যা পিএইচপি-তে অন্যান্য অবজেক্ট ওরিয়েন্টেড ল্যাঙ্গুয়েজ যেমন C++ বা জাভার তুলনায় ভিন্ন যেখানে এই শব্দটির অর্থ একই নামের পদ্ধতির সাথে একাধিকবার কিন্তু ভিন্ন আর্গুমেন্ট এবং/অথবা রিটার্ন টাইপ সহ ক্লাস করার ক্ষমতা। অন্যদিকে পিএইচপি-তে, গতিশীলভাবে বৈশিষ্ট্য এবং পদ্ধতি তৈরি করার বৈশিষ্ট্যটি ওভারলোডিং হিসাবে পরিচিত। পিএইচপি এর জাদু পদ্ধতি (ডবল আন্ডারস্কোর দিয়ে শুরু হওয়া পদ্ধতির নাম) গতিশীল বৈশিষ্ট্য এবং পদ্ধতি সেট আপ করতে ব্যবহৃত হয়।
ওভারলোডিং বৈশিষ্ট্যের জন্য নিম্নলিখিত জাদু পদ্ধতি ব্যবহার করা হয় -
সিনট্যাক্স
public __set ( string $name , mixed $value ) : void public __get ( string $name ) : mixed public __isset ( string $name ) : bool public __unset ( string $name ) : void
__set() সুরক্ষিত বা ব্যক্তিগত বা বিদ্যমান নেই এমন দুর্গম বৈশিষ্ট্যগুলিতে ডেটা লেখার জন্য চালানো হয়৷
__get() অ্যাক্সেসযোগ্য বৈশিষ্ট্য থেকে ডেটা পড়ে।
__isset() isset() অথবা empty() কে অ্যাক্সেসযোগ্য বৈশিষ্ট্যে কল করে।
__unset() চালু করা হয় যখন unset()কে অ্যাক্সেসযোগ্য বৈশিষ্ট্যে কল করা হয়।
নিম্নলিখিত কোডে, myprop নামে একটি গতিশীল সম্পত্তি সেট করা, পুনরুদ্ধার করা এবং আনসেট করা হয়েছে
উদাহরণ
<?php class myclass{ public function __set($name, $value){ echo "setting $name property to $value \n"; $this->$name = $value; } public function __get($name){ echo "value of $name property is "; return $this->$name; } public function __isset($name){ return isset($this->$name); } public function __unset($name){ unset($this->$name); } } $obj = new myclass(); $obj->myprop="test"; echo $obj->myprop . "\n"; var_dump (isset($obj->myprop)); unset($obj->myprop); var_dump (isset($obj->myprop)); ?>
আউটপুট
আউটপুট নিম্নরূপ -
setting myprop property to test test bool(true) bool(false)
পদ্ধতি ওভারলোডিং
গতিশীলভাবে পদ্ধতি সেট করতে ব্যবহৃত দুটি জাদু পদ্ধতি হল __call() এবং __callStatic()
public __call ( string $name , array $arguments ) : mixed public static __callStatic ( string $name , array $arguments ) : mixed
__call() ট্রিগার করা হয় যখন কোনো বস্তুর প্রেক্ষাপটে অ্যাক্সেসযোগ্য পদ্ধতি ব্যবহার করা হয়।
__callStatic() ট্রিগার করা হয় যখন একটি স্থির প্রেক্ষাপটে অ্যাক্সেসযোগ্য পদ্ধতি ব্যবহার করা হয়।
নিম্নলিখিত পরীক্ষা PHP
-এ ওভারলোডিং পদ্ধতি প্রদর্শন করেউদাহরণ
<?php class myclass{ public function __call($name, $args){ // Note: value of $name is case sensitive. echo "Calling object method $name with " . implode(" ", $args). "\n"; } public static function __callStatic($name, $args){ echo "Calling static method $name with " . implode(" ", $args). "\n"; } } $obj = new myclass(); $obj->mymethod("Hello World!"); myclass::mymethod("Hello World!"); ?>
আউটপুট
উপরের কোড নিম্নলিখিত ফলাফল তৈরি করে:
Calling object method mymethod with Hello World! Calling static method mymethod with Hello World!