মেথড ওভারলোডিং হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর একটি ধারণা যা একটি সহজ উপায়ে কম্পোজিট অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। ফাংশন ওভারলোডিং বা মেথড ওভারলোডিং এমন একটি বৈশিষ্ট্য যা একটি একই নামের সাথে বিভিন্ন পদ্ধতি তৈরি করার অনুমতি দেয় যা একে অপরের থেকে ভিন্নভাবে কাজ করে ইনপুট প্যারামিটারের প্রকারে এটি আর্গুমেন্ট হিসাবে গ্রহণ করে।
উপরের ধারণাটি অন্যান্য প্রোগ্রামিং ভাষার জন্য ভালো এবং একে বলা হয় স্ট্যাটিক পলিমরফিক অর্থাৎ মেথড ওভারলোডিং।
উদাহরণ
আসুন একটি উদাহরণের মাধ্যমে বুঝতে পারি।
<?php class machine { function doTask($var1){ return $var1; } function doTask($var1,$var2){ return $var1 * $var1 ; } } $task1 = new machine(); $task1->doTask(5,10); ?>
আউটপুট:
Error
ব্যাখ্যা:
এটি একটি ত্রুটি তৈরি করবে কারণ php বলবে আপনি এই পদ্ধতিটি দুবার ঘোষণা করেছেন।
কিন্তু অন্যান্য প্রোগ্রামিং ভাষা বলে, doTask($var1) এবং doTask($var1,$var2) ওভারলোড করা পদ্ধতি। পরেরটিকে কল করার জন্য, দুটি পরামিতি পাস করতে হবে, যেখানে আগেরটির জন্য শুধুমাত্র একটি প্যারামিটার প্রয়োজন।
তাই এই আচরণ অর্থাৎ কোডিং এর সময় একটি ফাংশন কল করার সিদ্ধান্তকে স্ট্যাটিক পলিমরফিক অর্থাৎ মেথড ওভারলোডিং বলা হয়।
আসুন আলোচনা করি কিভাবে PHP5 এর সাথে সম্পর্কিত মেথড ওভারলোডিং অর্জন করা যায়। PHP এর ক্ষেত্রে, মেথড ওভারলোডিং অর্জনের জন্য আমাদের পিএইচপি এর ম্যাজিক পদ্ধতি __call() ব্যবহার করতে হবে।
PHP-এ ওভারলোডিং মানে ইনপুট প্যারামিটার অনুযায়ী পদ্ধতির আচরণ গতিশীলভাবে পরিবর্তিত হয়। এই টিউটোরিয়ালে, আমরা সেই উপলব্ধিগুলি বুঝতে পারব। আসুন __call() পদ্ধতি নিয়ে আলোচনা করা যাক।
__কল():
যদি একটি ক্লাস __call() চালায়, তাহলে যদি সেই ক্লাসের একটি অবজেক্টকে এমন একটি পদ্ধতি দিয়ে কল করা হয় যেটির অস্তিত্ব নেই তাহলে সেই পদ্ধতির পরিবর্তে __call() বলা হয়।
উদাহরণ
আসুন একটি উদাহরণ দিয়ে পদ্ধতি ওভারলোডিং বুঝতে পারি।
<?php class Shape { const PI = 3.142 ; function __call($name,$arg){ if($name == 'area') switch(count($arg)){ case 0 : return 0 ; case 1 : return self::PI * $arg[0] ; case 2 : return $arg[0] * $arg[1]; } } } $circle = new Shape(); echo $circle->area(3); $rect = new Shape(); echo $rect->area(8,6); ?>
আউটপুট:
9.426 48
ব্যাখ্যা:
এখানে area() পদ্ধতিটি গতিশীলভাবে তৈরি করা হয় এবং ম্যাজিক পদ্ধতি __call() এর সাহায্যে কার্যকর করা হয় এবং অবজেক্ট হিসাবে প্যারামিটারের পাস অনুযায়ী এটির আচরণ পরিবর্তিত হয়।