PHP OOP တွင် ကလပ်စ်အမွေဆက်ခံခြင်းနှင့် interface အကောင်အထည်ဖော်ခြင်း
ကလပ်စ်တစ်ခုသည် အခြားကလပ်စ်တစ်ခုမှ အမွေဆက်ခံနိုင်ပြီး ထိုအချိန်တွင် interface တစ်ခုခုကို အကောင်အထည်ဖော်နိုင်ပါသည်။ လက်တွေ့ဥပမာဖြင့် ကြည့်ရှုပါမည်။
ကျွန်ုပ်တို့သည် Programmer ကလပ်စ်တစ်ခုပြုလုပ်လိုသည်ဆိုပါစို့၊
၎င်းတွင် အမည်၊ လစာနှင့် ပရိုဂရမ်မာတစ်ဦး သိရှိသော
ဘာသာစကားများစာရင်း ပါဝင်လိမ့်မည်။
�ခုအချိန်တွင် ကျွန်ုပ်တို့၏ ကလပ်စ်ဖော်ပြချက်သည် အလွန်မကွဲပြားပါ-
ဟုတ်ပါသည်၊ ကလပ်စ်တွင် အမည်၊ လစာ၊ ဘာသာစကားများ ပါဝင်မည်-
သို့သော် ကျွန်ုပ်တို့၏ ကလပ်စ်တွင် မည်သည့်နည်းလမ်းများ ပါဝင်မည်နည်း။
ယခု interface iProgrammer ကိုအသုံးပြု၍
ကျွန်ုပ်တို့၏ ကလပ်စ်ကို ပိုမိုတိကျစွာ ဖော်ပြကြပါစို့-
<?php
interface iProgrammer
{
public function __construct($name, $salary);
public function getName();
public function getSalary();
public function getLangs();
public function addLang($lang);
}
?>
ကျွန်ုပ်တို့ ရေးပြီးသား ကလပ်စ်များထဲမှာ ရှာဖွေကြည့်လိုက်ပါ၊
ကျွန်ုပ်တို့မှာ Employee ကလပ်စ်နှင့် တူသောကလပ်စ်တစ်ခု ရှိပြီးသားဖြစ်နေသည်။
ထိုကလပ်စ်သည် Programmer ကလပ်စ်၏ နည်းလမ်းအားလုံးကို အကောင်အထည်မဖော်ပါ၊
သို့သော် အစိတ်အပိုင်းတစ်ခုကိုမူ အကောင်အထည်ဖော်ထားသည်။
ကျွန်ုပ်တို့ရှိပြီးသား ကလပ်စ်၏ ကုဒ်မှာ ဤသို့ဖြစ်သည်-
<?php
class Employee
{
private $name;
private $salary;
public function __construct($name, $salary)
{
$this->name = $name;
$this->salary = $salary;
}
public function getName()
{
return $this->name;
}
public function getSalary()
{
return $this->salary;
}
}
?>
ကျွန်ုပ်တို့၏ အခြေအနေတွင် ယခုကဲ့သို့ ပြုလုပ်ရန် ယုတ္တိတန်ပါသည်၊
ကျွန်ုပ်တို့၏ အသစ် Programmer ကလပ်စ်သည်
Employee ကလပ်စ်မှ ၎င်း၏ကိုယ်ပိုင်လိုအပ်သော နည်းလမ်းများ၏ အစိတ်အပိုင်းကို အမွေဆက်ခံမည်
(ကျန်အပိုင်းကိုမူ နောက်ပိုင်းတွင် အသစ်ကလပ်စ်ထဲ၌ အကောင်အထည်ဖော်မည်)-
<?php
class Programmer extends Employee
{
}
?>
ထိုအချိန်တွင် Pogrammer ကလပ်စ်သည်
iProgrammer interface ကို အကောင်အထည်ဖော်သင့်သည်ကို ကျွန်ုပ်တို့သိရှိသည်-
<?php
class Programmer implements iProgrammer
{
}
?>
ယခု Employee ကလပ်စ်မှ အမွေဆက်ခံခြင်းနှင့်
iProgrammer interface အကောင်အထည်ဖော်ခြင်းကို ပေါင်းစပ်ကြည့်ပါမည်-
<?php
class Programmer extends Employee implements iProgrammer
{
}
?>
ကျွန်ုပ်တို့၏ Pogrammer ကလပ်စ်သည်
Employee ကလပ်စ်မှ __construct, getName နှင့် getSalary
နည်းလမ်းများကို အမွေဆက်ခံမည်ဖြစ်ပြီး၊
addLang နှင့် getLangs နည်းလမ်းများကိုမူ
ကျွန်ုပ်တို့ကိုယ်တိုင် အကောင်အထည်ဖော်ရန် လိုအပ်မည်-
<?php
class Programmer extends Employee implements iProgrammer
{
public function addLang($lang)
{
// အကောင်အထည်ဖော်မှု
}
public function getLangs()
{
// အကောင်အထည်ဖော်မှု
}
}
?>
iProgrammer interface အတွက်
နည်းလမ်းများသည် ကလပ်စ်၏ မူရင်းနည်းလမ်းများလား၊ အမွေဆက်ခံထားသော နည်းလမ်းများလား ဆိုသည်က
အရေးမကြီးပါ- အဓိကအချက်မှာ ဖော်ပြထားသည့် နည်းလမ်းအားလုံး အကောင်အထည်ဖော်ထားရမည် ဆိုသည့်အချက်ဖြစ်သည်။
ကျွန်ုပ်၏ Employee ကလပ်စ်၏ ကုဒ်နှင့်
iProgrammer interface ၏ ကုဒ်ကို ကူးယူပါ။ ကျွန်ုပ်၏
Programmer ကလပ်စ် ပုံကြမ်းကိုမူ ကူးယူမထားပါနှင့်-
ကျွန်ုပ်၏ကုဒ်ကို ကြည့်ရှုခြင်းမပြုဘဲ ထိုကလပ်စ်ကို
ကိုယ်တိုင် အကောင်အထည်ဖော်ပါ။