PHP OOP - Access Modifiers
PHP - Access Modifiers
Properties နှင့် method များသည် ၎င်းတို့ဝင်ရောက်နိုင်သည့်နေရာကို ထိန်းချုပ်သည့် access modifiers များပါရှိသည်။
အသုံးပြုခွင့်မွမ်းမံမှု သုံးခု ရှိသည်။
-
public
- ပစ္စည်းဥစ္စာ သို့မဟုတ် နည်းလမ်းကို နေရာတိုင်းမှ ဝင်ရောက်ကြည့်ရှုနိုင်သည်။ ဤသည်မှာ ပုံသေဖြစ်သည်။ -
protected
- ပိုင်ဆိုင်မှု သို့မဟုတ် နည်းလမ်းကို အတန်းအတွင်းနှင့် ထိုအတန်းမှ ဆင်းသက်လာသော အတန်းများအလိုက် ဝင်ရောက်ကြည့်ရှုနိုင်သည်။ -
private
- ပစ္စည်း သို့မဟုတ် နည်းလမ်းကို အတန်းတွင်း၌သာ ဝင်ရောက်နိုင်သည်။
အောက်ပါနမူနာတွင် ကျွန်ုပ်တို့သည် မတူညီသောဝင်ရောက်ခွင့်မွမ်းမံမှုသုံးခုကို ဂုဏ်သတ္တိသုံးခု (အမည်၊ အရောင်နှင့် အလေးချိန်) သို့ ထည့်ထားသည်။ ဤတွင်၊ သင်သည် အမည်ပိုင်ဆိုင်မှုကို သတ်မှတ်ရန်ကြိုးစားပါက ၎င်းသည် ကောင်းမွန်စွာအလုပ်လုပ်လိမ့်မည် (အမည်ပိုင်ဆိုင်မှုသည် အများသူငှာဖြစ်ပြီး နေရာတိုင်းမှ ဝင်ရောက်ကြည့်ရှုနိုင်သောကြောင့်)။ သို့သော်၊ သင်သည် အရောင် သို့မဟုတ် အလေးချိန် ပိုင်ဆိုင်မှုကို သတ်မှတ်ရန် ကြိုးစားပါက ၎င်းသည် ဆိုးရွားသော အမှားအယွင်းတစ်ခု ဖြစ်လာနိုင်သည် (အရောင်နှင့် အလေးချိန်ကို အကာအကွယ်ထားပြီး သီးသန့်ဖြစ်သောကြောင့်)။
ဥပမာ
<?php
class Fruit {
public
$name;
protected $color;
private $weight;
}
$mango = new Fruit();
$mango->name = 'Mango'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>
နောက်နမူနာတွင် ကျွန်ုပ်တို့သည် လုပ်ဆောင်ချက်နှစ်ခုသို့ ဝင်ရောက်မှုမွမ်းမံမှုများကို ထည့်သွင်းထားသည်။ ဤတွင်၊ သင်သည် set_color() သို့မဟုတ် set_weight() လုပ်ဆောင်ချက်ကို ခေါ်ရန်ကြိုးစားပါက ၎င်းသည် ဆိုးရွားသော အမှားတစ်ခု ဖြစ်လာလိမ့်မည် (လုပ်ဆောင်ချက်နှစ်ခုကို ကာကွယ်ထားပြီး သီးသန့်ဟု ယူဆသောကြောင့်)၊ ဂုဏ်သတ္တိများအားလုံးကို အများသူငှာမြင်ရလျှင်ပင်၊
ဥပမာ
<?php
class Fruit {
public
$name;
public $color;
public $weight;
function set_name($n) {
// a public function (default)
$this->name = $n;
}
protected function set_color($n) {
// a protected function
$this->color = $n;
}
private function set_weight($n) {
// a private function
$this->weight = $n;
}
}
$mango = new Fruit();
$mango->set_name('Mango'); // OK
$mango->set_color('Yellow'); // ERROR
$mango->set_weight('300'); // ERROR
?>