PHP သည်တက်ကြွသောစာရိုက်သည့်ဘာသာစကားဖြစ်သည်။ ဆိုလိုသည်မှာ variable များသည် scripts များကွပ်မျက်ခံရသောအခါ parameter အမျိုးအစားများသို့မဟုတ်ပြန်လည်အမျိုးအစားများလည်းမရှိပါ။ PHP overload သည် Runtime တွင်အတန်း၏ဂုဏ်သတ္တိများနှင့်နည်းလမ်းများကိုပြုပြင်ပြောင်းလဲခြင်းသို့မဟုတ်ပြုပြင်ခြင်းကိုရည်ညွှန်းသည်။
PHP သည်အဓိက overload ပုံစံနှစ်ခုကိုထောက်ပံ့သည်။
1 ။ Attribute overloading - Magic Methods __GET () နှင့် __set) နှင့် __set () နှင့် __set) ကို အတန်း၏ဂုဏ်သတ္တိများကိုပြောင်းလဲရန်သို့မဟုတ်သတ်မှတ်ရန်အသုံးပြုနိုင်သည်။
2 ။ Method Overloading - Magic Methods __call () နှင့် __callstatic) နှင့် __callstatic () နှင့် __CallStatic () နှင့် __callstatic () နှင့် __CALLSTATITATION () ကို သုံးနိုင်သည်။
ပိုင်ဆိုင်မှုမရှိသောပိုင်ဆိုင်မှုများကိုရယူသည့်အခါ __GET () နည်းလမ်းကိုခေါ်သည်။ ဒီမှော်အတတ်အားဖြင့် Properties ကို dvonatically ထည့်သွင်းနိုင်ပါတယ်။
class Test {
private $data = [
'name' => 'Tom',
'age' => 18
];
public function __get($name) {
if (isset($this->data[$name])) {
return $this->data[$name];
}
return null;
}
}
$test = new Test();
echo $test->name; // ထုတ်လုပ်ခြင်း Tom
echo $test->age; // ထုတ်လုပ်ခြင်း 18
echo $test->gender; // ထုတ်လုပ်ခြင်း null
__GET () နည်းလမ်းသည် parameter $ နာမကို လက်ခံသည်, ၎င်းသည် attribute နာအမည်ဖြစ်သည်။ ပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုမရှိပါက Null ပြန်လာသည်။
မဆိုမစသည့်ပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုတစ်ခုအတွက်တန်ဖိုးတစ်ခုသတ်မှတ်သည့်အခါ __set () နည်းလမ်းကိုဖြစ်ပေါ်စေသည်။ ဒီမှော်အတတ်ကိုတဆင့်, သငျသညျ attribute နှင့်၎င်း၏တန်ဖိုးကို dvonatically add နိုင်ပါတယ်။
class Test {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
$test = new Test();
$test->name = 'Tom';
echo $test->name; // ထုတ်လုပ်ခြင်း Tom
__s ဆိုသောနည်းလမ်း () နည်းလမ်းသည် parameters နှစ်ခုကိုလက်ခံသည်။ $ name (attribute name) နှင့် $ တန်ဖိုး (attribute value)
မတည်ရှိသည့်နည်းလမ်းကိုမခေါ်သည့်အခါ __call () နည်းလမ်းကိုခေါ်သည်။ ဒီမှော်နည်းလမ်းဖြင့်နည်းလမ်းများကို dynamically ထည့်သွင်းနိုင်သည်။
class Test {
public function __call($name, $arguments) {
if ($name == 'add') {
return array_sum($arguments);
}
return null;
}
}
$test = new Test();
echo $test->add(1, 2, 3); // ထုတ်လုပ်ခြင်း 6
echo $test->subtract(10, 2); // ထုတ်လုပ်ခြင်း null
__call () နည်းလမ်းသည် parameter နှစ်ခုကိုလက်ခံသည်။ $နာသည့်အမည် (နည်းလမ်းအမည်) နှင့် $ အငြင်းပွားမှုများ (နည်းလမ်း parameters) ။ အကယ်. နည်းလမ်းမတည်ရှိပါက Null ပြန်လာသည်။
မတည်ရှိသည့်တည်ငြိမ်သောနည်းလမ်းဟုမခေါ်ပါ ။ ဤနည်းလမ်းသည် __CAST () နည်းလမ်းနှင့်ဆင်တူသည်။
class Test {
public static function __callStatic($name, $arguments) {
if ($name == 'add') {
return array_sum($arguments);
}
return null;
}
}
echo Test::add(1, 2, 3); // ထုတ်လုပ်ခြင်း 6
echo Test::subtract(10, 2); // ထုတ်လုပ်ခြင်း null
__CALLATITATIC () နည်းလမ်းသည် __CAST () နည်းလမ်းနှင့်ဆင်တူသော်လည်းတည်ငြိမ်သောနည်းလမ်းများနှင့်သာသက်ဆိုင်သည်။