လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ပုဂ္ဂလိက attributes များ 0 င်ရောက်ခြင်းအမှားပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်နည်း

ပုဂ္ဂလိက attributes များ 0 င်ရောက်ခြင်းအမှားပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်နည်း

M66 2025-07-26

PHP ၏အမှားပြ problem နာကိုဖြေရှင်းနိုင်သည့်ကိုယ်ရေးကိုယ်တာ attribute များ

PHP ပရိုဂရမ်တွင်ပုဂ္ဂလိကဂုဏ်သတ္တိများကိုရယူရန်ကြိုးစားသည့်အမှားများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ပုဂ္ဂလိက attribute တွေဟာအတန်းကိုအတန်းအစားနဲ့ပတ်သက်ပြီးသတ်မှတ်ထားပြီးလူတန်းစားကသာ 0 င်ရောက်နိုင်ပါတယ်။ ပုဂ္ဂလိက attribute များရယူခြင်းပြင်ပအမှားများဖြစ်ပေါ်စေပါလိမ့်မယ်။ ဤဆောင်းပါးသည်အများအပြားဘုံဖြေရှင်းချက်များကိုစူးစမ်းလေ့လာပါလိမ့်မည်။

ဥပမာ - ပုဂ္ဂလိက 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 ၏ထိန်းသိမ်းမှုကိုထိန်းသိမ်းရန်ဖြစ်သည်။