آموزش متد اورلودینگ در php
با خبرکاو همراه باشید
در نگاه اول شاید بگید در php مفهومی تحت عنوان اورلودینگ پشتیبانی نشده اما با بکارگیری تکنیکی این امکان برای متد اورلودینگ بوجود میاد
ما برای پیاده سازی متد اورلودینگ از متد های جادویی php استفاده میکنیم
حالا اون متد جادویی چیه ؟
call__
تکنیک استفاده از متد کال هستش
در حالت عادی شما اگه بیایید دو متد همنام با امضا های متفاوت رو بنویسید چی میشه ؟
php به شما ارور میده راحت
به کد زیر دقت کنید:
کد:
class machine {
function doTask($var1){
return $var1;
}
function doTask($var1,$var2){
return $var1 * $var1 ;
}
}
$task1 = new machine();
$task1->doTask(5,10);
خروجی کد بالا چیزی جز ارور نیست
اما چطور باید کد رو برای اورلودینگ پیاده سازی کنیم پس؟
کد زیر رو نگاه کنید حلال مشکلاته:
کد:
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);
با کد بالا دیگه ارور نمیگیرید و راحت اورلودینگ پیاده سازی میشه و مثل بنز کار میکنه :))