PHP ရှိ OOP တွင် ဖတ်ရှုရန်သာ အသုံးပြုနိုင်သော ဂုဏ်သတ္တိများ
အများသူငှာ မရနိုင်သော ဂုဏ်သတ္တိများရှိသည့် ကလပ်စ်တစ်ခုကို ကြည့်ကြပါစို့။
<?php
class Test
{
private $prop1 = 1;
private $prop2 = 2;
}
?>
ယခု ဤဂုဏ်သတ္တိများကို ပြင်ပလောကတွင် ဖတ်ရှုရန်သာ ရရှိနိုင်အောင် ပြုလုပ်ကြပါစို့။ ကျွန်ုပ်တို့သည် ယခင်က ဂုဏ်သတ္တိတစ်ခုစီအတွက် getter များကို ဖန်တီးကာ setter များကို မဖန်တီးခြင်းဖြင့် ဤကဲ့သို့ပြုလုပ်ခဲ့ပြီးဖြစ်သည်။
ယခု ဤပြဿနာကိုဖြေရှင်းရန် မှော်နည်းလမ်း __get ကို အသုံးပြုကြပါစို့။
၎င်းတွင် တောင်းဆိုထားသော ဂုဏ်သတ္တိ၏ တန်ဖိုးကို ပြန်ပေးပါမည်။
မည်သို့ပြုလုပ်ရမည်နည်း။ တောင်းဆိုထားသော ဂုဏ်သတ္တိ၏ အမည်သည် __get နည်းလမ်း၏ သတ်မှတ်ချက်ထဲသို့ ရောက်ရှိလာပြီး၊ ကျွန်ုပ်တို့၏ကိစ္စတွင် ၎င်းသည် $property ဖြစ်သည်။
ဆိုလိုသည်မှာ၊ အမည်သည် ကိန်းရှင်ထဲတွင် သိမ်းဆည်းထားသော ဂုဏ်သတ္တိ၏ တန်ဖိုးကို ဤသို့ဖတ်နိုင်သည်။
$this->$property (ဂုဏ်သတ္တိ၏အမည်သည် ကိန်းရှင်တစ်ခုဖြစ်လာမည်၊ ဆိုလိုသည်မှာ အစတွင် ဒေါ်လာလက္ခဏာပါမည်၊ ကျွန်ုပ်တို့သည် ယခင်သင်ခန်းစာများတွင် ဤအချက်ကိုလေ့လာခဲ့ပြီးဖြစ်သည်)။
ဖော်ပြထားသော __get နည်းလမ်းကို ဖန်တီးကြပါစို့။
<?php
class Test
{
private $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $this->$property;
}
}
?>
ဂုဏ်သတ္တိများကိုဖတ်ရန် ၎င်းကိုအသုံးပြုကြပါစို့။
<?php
$test = new Test;
echo $test->prop1; // 1 ကိုပြမည်
echo $test->prop2; // 2 ကိုပြမည်
?>
ဂုဏ်သတ္တိထဲသို့ တစ်ခုခုရေးရန် ကြိုးစားခြင်းသည် အမှားတစ်ခုကို ဖြစ်ပေါ်စေမည်။
<?php
$test = new Test;
$test->prop1 = 2; // အမှားတစ်ခုကို ပြမည်
?>
ဤအရာသည်ကျွန်ုပ်တို့လိုအပ်သည့်အရာပင်ဖြစ်သည်။ ဂုဏ်သတ္တိကို ဖတ်နိုင်သော်လည်း ရေးသားခြင်းမပြုနိုင်ပါ။
မရှိသောဂုဏ်သတ္တိကို ဖတ်ရန် ကြိုးစားခြင်းသည် အမှားတစ်ခုကို ပြမည်။
<?php
$test = new Test;
echo $test->prop3; // အမှားတစ်ခုကို ပြမည်
?>
အောက်ပါအသေးစိတ်အချက်ကိုလည်း သတိပြုပါ။ ကျွန်ုပ်တို့သည် ဂုဏ်သတ္တိများကို ဖတ်ရန်သာအသုံးပြုနိုင်အောင် အဟောင်းနည်းလမ်းဖြင့် ပြုလုပ်သောအခါ၊ ဂုဏ်သတ္တိကိုဖတ်ရန် ကျွန်ုပ်တို့သည် getter နည်းလမ်းကို အသုံးပြုခဲ့သည်။
နည်းလမ်းအသစ်တွင်၊ ဂုဏ်သတ္တိများကို အများသူငှာရနိုင်သည့်အတိုင်း တိုက်ရိုက်ဆက်သွယ်ပါမည်။ သို့သော် ၎င်းတို့အတွင်း ရေးသားခြင်းမပြုနိုင်ပါ၊ ၎င်းတို့သည် အများသူငှာ မရနိုင်သကဲ့သို့ဖြစ်နေမည်။
User ကလပ်စ်တစ်ခုကို ပေးထားပါစို့၊ ၎င်း၏ဂုဏ်သတ္တိများကို getter များအသုံးပြု၍ ဖတ်ရန်သာအသုံးပြုနိုင်သည်။
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
ဤကလပ်စ်၏ကုဒ်ကို getter များအစား မှော်နည်းလမ်း __get ကိုအသုံးပြုအောင် ပြန်လည်ပြင်ဆင်ပါ။