PHP ပရိုဂရမ်တွင်ပုဂ္ဂလိကဂုဏ်သတ္တိများကိုရယူရန်ကြိုးစားသည့်အမှားများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ပုဂ္ဂလိက attribute တွေဟာအတန်းကိုအတန်းအစားနဲ့ပတ်သက်ပြီးသတ်မှတ်ထားပြီးလူတန်းစားကသာ 0 င်ရောက်နိုင်ပါတယ်။ ပုဂ္ဂလိက attribute များရယူခြင်းပြင်ပအမှားများဖြစ်ပေါ်စေပါလိမ့်မယ်။ ဤဆောင်းပါးသည်အများအပြားဘုံဖြေရှင်းချက်များကိုစူးစမ်းလေ့လာပါလိမ့်မည်။
ရိုးရှင်းသောဥပမာကုဒ်တစ်ခုကိုအရင်ကြည့်ကြစို့။
class Person {
private $name = "John";
public function getName() {
return $this->name;
}
}
$person = new Person();
echo $person->name; // ပုဂ္ဂလိကဂုဏ်သတ္တိများကိုရယူပါ,အမှားတစ်ခုသတင်းပို့ပါ
အထက်ပါကုဒ်သည်ပုဂ္ဂလိကပိုင်ဆိုင်မှု $ အမည်နှင့် $ အမည်၏တန်ဖိုးကိုပြန်ပို့ရန်ပုဂ္ဂလိကပိုင်ဆိုင်မှု $ အမည်နှင့်အများပြည်သူနည်းလမ်း getname ပါသောလူတန်းစားတစ် ဦး ကိုသတ်မှတ်ပါတယ်။ ကျွန်ုပ်တို့သည်အတန်းပြင်ပပြင်ပတွင်ဒေါ်လာအမည်ကိုတိုက်ရိုက်ရယူရန်ကြိုးစားသောအခါ PHP သည်အမှားတစ်ခုသတင်းပို့လိမ့်မည်။
ဤပြ problem နာကိုဖြေရှင်းရန်ကျွန်ုပ်တို့သည်အတန်းအတွင်းရှိအများပြည်သူဆိုင်ရာနည်းလမ်းများပေးခြင်းဖြင့်ပုဂ္ဂလိကဂုဏ်သတ္တိများကိုရယူနိုင်သည်။ ပုဂ္ဂလိကပိုင်ဆိုင်မှု၏တန်ဖိုးကိုသတ်မှတ်ရန်အများပြည်သူ sixame method ကိုပေါင်းထည့်နိုင်သည်။
class Person {
private $name = "John";
public function getName() {
return $this->name;
}
public function setName($newName) {
$this->name = $newName;
}
}
$person = new Person();
echo $person->getName(); // ထုတ်လုပ်ခြင်း "John"
$person->setName("Tom");
echo $person->getName(); // ထုတ်လုပ်ခြင်း "Tom"
ဤဖြေရှင်းချက်တွင်လူတန်းစားအတွက် setname method တစ်ခုထပ်ထည့်သည်။
ပုဂ္ဂလိက attributes များကိုအများပြည်သူသုံးနည်းလမ်းများဖြင့်အသုံးပြုခြင်းနှင့်ပြုပြင်ခြင်းအပြင်ပုဂ္ဂလိကဂုဏ်ရည်များကိုလက်လှမ်းမီစေရန် Magic Methods __Get နှင့် __set ကိုသုံးနိုင်သည်။ ဤတွင်မှော်နည်းလမ်းများအသုံးပြုခြင်း၏ဥပမာတစ်ခုဖြစ်သည်။
class Person {
private $name = "John";
public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
}
}
public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
}
}
$person = new Person();
echo $person->name; // ထုတ်လုပ်ခြင်း "John"
$person->name = "Tom";
echo $person->name; // ထုတ်လုပ်ခြင်း "Tom"
Magic Methods များ __GET နှင့် __SESS ကိုအကောင်အထည်ဖော်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ပုဂ္ဂလိကဂုဏ်သတ္တိများကိုရယူခြင်း,
ဤနည်းလမ်းများသည်ပုဂ္ဂလိကပိုင်ဆိုင်မှု 0 င်ရောက်မှုအမှားများပြ problem နာကိုဖြေရှင်းနိုင်သော်လည်းဤနည်းစနစ်များကိုအလွန်အကျွံအသုံးပြုခြင်းသည်အတန်း၏ encapsulation များကိုဖျက်ဆီးပစ်နိုင်သည်ကိုသတိပြုသင့်သည်။ Encapsulation ဆိုသည်မှာ Organ-Oriented ပရိုဂရမ်၏အခြေခံနိယာမတစ်ခုဖြစ်သည်။ ၎င်းသည်သင်၏ကုဒ်၏ထိန်းသိမ်းနိုင်မှုနှင့်ပမာဏကိုတိုးတက်စေသည်။ ထို့ကြောင့်အတန်းတစ်ခုကိုဒီဇိုင်းရေးဆွဲရာတွင်အတန်း၏ပြည်တွင်းအကောင်အထည်ဖော်မှုကိုပြင်ပအပိုင်များမှတိုက်ရိုက်မဖွင့်ရန်သေချာစေရန်ပုဂ္ဂလိက attribute များကိုတိုက်ရိုက်ဖော်ထုတ်ရန်ကြိုးစားသင့်သည်။
PHP တွင်ပုဂ္ဂလိက attribute များရယူခြင်းကြောင့်ဖြစ်ပေါ်လာသောအမှားပြ problem နာကိုဖြေရှင်းရန်ကျွန်ုပ်တို့သည်အများပြည်သူဆိုင်ရာနည်းလမ်းများပေးရန်နှင့် MANCON attribute များကိုသွယ်ဝိုက်။ လက်တွဲ. Magic Methods __GETS နှင့် __. ကိုသုံးနိုင်သည်။ တစ်ချိန်တည်းမှာပင်ကျွန်ုပ်တို့သည်ဤနည်းလမ်းများကိုကျွန်ုပ်တို့အားဤနည်းလမ်းများကို အသုံးပြု. အတန်း၏ encapsularment ကိုမပျက်စီးစေနိုင်အောင်ဤနည်းဖြင့် code ၏ထိန်းသိမ်းမှုကိုထိန်းသိမ်းရန်ဖြစ်သည်။