PHP OOP - အတန်းများနှင့် အရာဝတ္ထုများ
အတန်းသည် အရာဝတ္ထုများအတွက် ပုံစံပလိတ်ဖြစ်ပြီး၊ အရာဝတ္ထုသည် အတန်း၏ ဥပမာတစ်ခုဖြစ်သည်။
OOP Case
ကျွန်ုပ်တို့တွင် Fruit ဟုခေါ်သော အတန်းတစ်ခုရှိသည်ဟု ယူဆကြပါစို့။ အသီးတစ်ခုတွင် အမည်၊ အရောင်၊ အလေးချိန်၊ စသည်ဖြင့် ဂုဏ်သတ္တိများ ရှိနိုင်ပါသည်။ ဤဂုဏ်သတ္တိများ၏ တန်ဖိုးများကို ထိန်းသိမ်းရန် $name၊ $color နှင့် $weight ကဲ့သို့သော variable များကို သတ်မှတ်နိုင်ပါသည်။
အရာဝတ္ထုတစ်ခုချင်းစီ (ပန်းသီး၊ ငှက်ပျောသီး စသည်) ကို ဖန်တီးသောအခါ၊ ၎င်းတို့သည် အတန်းမှ ဂုဏ်သတ္တိများနှင့် အပြုအမူအားလုံးကို အမွေဆက်ခံသော်လည်း အရာဝတ္ထုတစ်ခုစီသည် ဂုဏ်သတ္တိများအတွက် မတူညီသော တန်ဖိုးများ ရှိလိမ့်မည်။
Class တစ်ခု သတ်မှတ်ပါ။
အတန်းတစ်ခုအား class
သော့ချက်စကားလုံးကို အသုံးပြုကာ၊ အတန်း၏အမည်နှင့် နောက်တွင် ကောက်ကောက်ကောက်ကောက်တစ်စုံ ({}) ဖြင့် သတ်မှတ်သည်။ ၎င်း၏ ဂုဏ်သတ္တိများနှင့် နည်းလမ်းများအားလုံးသည် ညှပ်များအတွင်း၌ ရှိသည်။
အထားအသို
<?php
class Fruit {
// code goes here...
}
?>
အောက်တွင် ကျွန်ုပ်တို့သည် သတ်မှတ်ခြင်းနှင့် $name ပိုင်ဆိုင်မှုအား သတ်မှတ်ခြင်းအတွက် သတ်မှတ်ခြင်းနှင့် ရယူခြင်းအတွက် သတ်မှတ်ခြင်းနှင့် $name property နှစ်ခု ($name နှင့် $color) နှင့် set_name() နှင့် get_name() နည်းလမ်းနှစ်ခုပါရှိသော ဂုဏ်သတ္တိနှစ်ခု ($name နှင့် $color) တို့ပါ၀င်သော Fruit ကိုကြေငြာသည် ။
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
မှတ်ချက်- class တစ်ခုတွင်၊ variable များကို properties ဟုခေါ်ပြီး function များကို method ဟုခေါ်သည်။
အရာဝတ္ထုများကို သတ်မှတ်ပါ။
အတန်းများသည် အရာဝတ္ထုများ မပါရှိပါ။ ကျွန်ုပ်တို့သည် အတန်းတစ်ခုမှ အရာဝတ္ထုများစွာကို ဖန်တီးနိုင်သည်။ အရာဝတ္ထုတစ်ခုစီတွင် class တွင်သတ်မှတ်ထားသော ဂုဏ်သတ္တိများနှင့် method များ အားလုံးရှိသော်လည်း ၎င်းတို့တွင် မတူညီသော ပိုင်ဆိုင်မှုတန်ဖိုးများ ရှိမည်ဖြစ်သည်။
new
အတန်း၏ Objects များကို keyword ဖြင့် ဖန်တီး ထားသည်။
အောက်ဖော်ပြပါ ဥပမာတွင်၊ $apple နှင့် $banana သည် class Fruit ၏ ဥပမာများဖြစ်သည် ။
ဥပမာ
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
အောက်ဖော်ပြပါ ဥပမာတွင်၊ ကျွန်ုပ်တို့သည် $color property ကို သတ်မှတ်ခြင်းနှင့် ရယူခြင်းအတွက် Fruit အတန်းတွင် နောက်ထပ်နည်းလမ်းနှစ်ခုကို ပေါင်းထည့်သည်-
ဥပမာ
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - $ this Keyword
$ ဤသော့ချက်စကားလုံးသည် လက်ရှိအရာဝတ္တုကို ရည်ညွှန်းပြီး နည်းလမ်းများအတွင်း၌သာ ရရှိနိုင်သည်။
အောက်ပါဥပမာကိုကြည့်ပါ-
ဥပမာ
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
ဒါဆို $name property ရဲ့တန်ဖိုးကို ဘယ်မှာပြောင်းလို့ရမလဲ။ နည်းလမ်းနှစ်ခုရှိပါတယ်:
1. အတန်းထဲတွင် (set_name() method ကိုထည့်၍ $this ကိုသုံးခြင်းဖြင့်)
ဥပမာ
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. အတန်းအပြင်ဘက် (ပိုင်ဆိုင်မှုတန်ဖိုးကို တိုက်ရိုက်ပြောင်းလဲခြင်းဖြင့်):
ဥပမာ
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - ဥပမာ
instanceof
အရာဝတ္ထုတစ်ခုသည် သီးခြားအတန်းတစ်ခုနှင့် သက်ဆိုင်ခြင်းရှိ၊ မရှိ စစ်ဆေးရန် သော့ချက်စကားလုံးကို အသုံးပြုနိုင်သည် ။
ဥပမာ
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>