Object-Orient-Oriented Programming တွင်အတန်းစတင်ခြင်းသည်အလွန်အရေးပါသောအစိတ်အပိုင်းဖြစ်သည်။ ကျွန်ုပ်တို့သည်များသောအားဖြင့်ဆောက်လုပ်ရေးလုပ်ငန်းများ ( __Construction ) မှတစ်ဆင့်အတန်းစတင်လုပ်ဆောင်မှုများပြုလုပ်လေ့ရှိသည်။ သို့သော်အချို့သောကိစ္စရပ်များတွင်အရာဝတ်ထု၏စတင်လည်ပတ်မှုများကိုအထူး သ ဖြင့်စတင်လည်ပတ်ခြင်း, ဤဆောင်းပါးသည် big functions များမှတဆင့်အရာဝတ်ထုကိုစတင်ရန်မည်သို့အကောင်အထည်ဖော်ရမည်ကိုထိရောက်သောနည်းစနစ်များကိုရှာဖွေပါလိမ့်မည်။
အရာဝတ်ထုကိုဖန်တီးပြီးနောက် Init function ကိုများသောအားဖြင့်အပိုသတင်းအချက်အလက်စစ်ဆင်ရေးများပြုလုပ်ရန်အသုံးပြုသည်။ ဆောက်လုပ်ရေးလုပ်ငန်းများနှင့်နှိုင်းယှဉ်ပါက Init function သည်ရှုပ်ထွေးသောစတင်သည့်အလုပ်များကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်ပြုစုပျိုးထောင်ရန်ခွင့်ပြုသည်။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည်အရာဝတ်ထုကိုကွဲပြားသောပတ် 0 န်းကျင်ဆိုင်ရာဖွဲ့စည်းပုံအခြေခံဥပဒေအရအစပြုရန်လိုအပ်နိုင်သည်,
Init လုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်း၏အားသာချက်များမှာ -
သီးခြားစတင်ခြင်းယုတ္တိဗေဒ - ရှုပ်ထွေးရှုပ်ထွေးသောအထူးသဖြင့်ဖွဲ့စည်းမှုဆိုင်ရာယုတ္တိဗေဒဆိုင်ရာစည်းမျဉ်းစည်းကမ်းများကနေသီးခြားဖွဲ့စည်းထားသည့်ပုံစံကိုပိုမိုတိကျစေပါ။
နှောင့်နှေးခြင်း ။
Code ထိန်းသိမ်းမှုကိုတိုးတက်အောင်လုပ်ခြင်း - အနာဂတ်ပြုပြင်ခြင်းနှင့်အကောင်းမြင်ခြင်းအတွက် function တစ်ခု၏ initialization code ကိုအာရုံစူးစိုက်ပါ။
များသောအားဖြင့်ကျွန်ုပ်တို့သည်အရာဝတ်ထုကိုဖန်တီးသောအခါလိုအပ်သောအစပြုရန်လုပ်ဆောင်ရန်အတွက် Init Function တွင် Init function ကို Call Constructor တွင်ခေါ်သည်။ PHP တွင် Init function ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသည့်ရိုးရှင်းသောဥပမာတစ်ခုရှိသည်။
<?php
class MyClass {
private $data;
public function __construct() {
// အဆိုပါဆောက်လုပ်ရေးအတွက်ခေါ် init နည်းလမ်း
$this->init();
}
// init လှုပ်ရှားမှုများ၏ရှုပ်ထွေးသောစတင်
private function init() {
// ဥပမာအားဖြင့်,configuration file မှဒေတာကိုတင်
$this->data = $this->loadDataFromUrl("https://gitbox.net/api/data");
}
// ဝန်အချက်အလက်ကိုတုပသောလုပ်ဆောင်ချက်များကို
private function loadDataFromUrl($url) {
// ငါတို့သွားမယ်လို့ယူဆတယ် URL ဒေတာကိုတင်
// ဒီမှာသုံးနိုင်ပါတယ် cURL 或其他နည်းလမ်း来获取远程数据
return "ထံမှဒေတာ {$url} ဝန်တင်";
}
public function getData() {
return $this->data;
}
}
// အသုံးပြု MyClass အမျိုးအစား
$obj = new MyClass();
echo $obj->getData(); // ထုတ်လုပ်ခြင်း:ထံမှဒေတာ https://gitbox.net/api/data ဝန်တင်
?>
ဤဥပမာတွင်ကျွန်ုပ်တို့သည်အချက်အလက်များကို Init function မှတဆင့် တင်. ဒေတာများကို ဒေါ်လာဒေတာ အမျိုးမျိုးသို့သိမ်းဆည်းထားသည်။ စတင်လုပ်ဆောင်ခြင်းသည် constructor တွင်တိုက်ရိုက်ထားရှိမည့် Initionalization စစ်ဆင်ရေးကို Init function ကိုနှောင့်နှေးစေသည်။ ဤချဉ်းကပ်မှုကပိုမိုကောင်းမွန်သောအတိုချုပ်စေသည်။
Init function ကို Initialization စစ်ဆင်ရေးကိုခွဲထုတ်ခြင်းက code ၏ရှင်းလင်းပြတ်သားမှုကိုတိုးတက်စေသော်လည်း, ဤတွင်အချို့သောသိကောင်းစရာများရှိသည်:
ပျင်းရိသောတင်ခြင်းသည်စွမ်းဆောင်ရည်အကောင်းဆုံးနည်းလမ်းဖြစ်သည်။ ၎င်း၏အခြေခံအယူအဆမှာအရင်းအမြစ်များကိုလိုအပ်သည့်အခါသာအရင်းအမြစ်များကိုလိုအပ်သည့်အခါသာတင်ရန်ဖြစ်သည်။ ပျင်းရိသောတင်ခြင်းသည်အရာဝတ်ထုကိုစတင်ရန်စွမ်းဆောင်ရည်ကိုတိုးတက်စေပြီးမလိုအပ်သောအရင်းအမြစ်များကိုစွန့်ပစ်ပစ္စည်းများကိုရှောင်ရှားနိုင်သည်။
<?php
class MyClass {
private $data;
public function __construct() {
// အဆိုပါဆောက်လုပ်ရေးမည်သည့်အစပျိုးမထားဘူး,မလိုအပ်မှီတိုင်အောင်စစ်မှန်တဲ့စတင်နှောင့်နှေး
}
public function init() {
if ($this->data === null) {
$this->data = $this->loadDataFromUrl("https://gitbox.net/api/data");
}
}
private function loadDataFromUrl($url) {
return "ထံမှဒေတာ {$url} ဝန်တင်";
}
public function getData() {
// တယ်လီဖုန်းဆက်ခြင်း init နည်းလမ်း进行懒ဝန်တင်
$this->init();
return $this->data;
}
}
$obj = new MyClass();
echo $obj->getData(); // ထုတ်လုပ်ခြင်း:ထံမှဒေတာ https://gitbox.net/api/data ဝန်တင်
?>
ဤဥပမာတွင် Init function ကိုအလိုအလျောက်တည်ဆောက်သူတွင်အလိုအလျောက်ဟုခေါ်ပြီးလိုအပ်သည့်အခါ GetData နည်းလမ်းမှတဆင့်အတိအလင်းခေါ်ဆိုသည်။ ၎င်းသည်ပျင်းရိသောတင်ခြင်းကိုဆိုလိုသည်,
အကယ်. Initialization Process တွင် Remote server (သို့) ဒေတာဘေ့စ်ကိုရယူခြင်းကဲ့သို့သောသယံဇာတများအထူးကြပ်မတ်လုပ်ငန်းများပါ 0 င်ပါကစတင်ခြင်းရလဒ်များကိုသိမ်းဆည်းရန် cache ကိုအသုံးပြုရန်စဉ်းစားနိုင်သည်။ နောက်တစ်ကြိမ်သင်ဝင်ရောက်ကြည့်ရှုပါကဒေတာတွင်ရှိပြီးသားအချက်အလက်များရှိပြီးဖြစ်ပါက၎င်းကိုပြန်လည်ထူထောင်ရန်မလိုအပ်ပါ။
<?php
class MyClass {
private $data;
private $cache;
public function __construct() {
// cache ကိုအစပြု
$this->cache = [];
}
public function init() {
if (!isset($this->cache['data'])) {
$this->cache['data'] = $this->loadDataFromUrl("https://gitbox.net/api/data");
}
$this->data = $this->cache['data'];
}
private function loadDataFromUrl($url) {
return "ထံမှဒေတာ {$url} ဝန်တင်";
}
public function getData() {
$this->init();
return $this->data;
}
}
$obj = new MyClass();
echo $obj->getData(); // ထုတ်လုပ်ခြင်း:ထံမှဒေတာ https://gitbox.net/api/data ဝန်တင်
?>
ဒီဥပမာမှာရိုးရှင်းတဲ့ cache လုပ်တဲ့ယန္တရားကိုမိတ်ဆက်ပေးတယ်။ ဒေတာများကိုတင်ပါကသိမ်းဆည်းထားသောဒေတာများကိုတိုက်ရိုက် သုံး. ဝေးလံသောတောင်းဆိုမှုများကိုမပြုလုပ်တော့ပါ။
Init function ကို init function ထဲကို init function ထဲကိုခွဲထုတ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ရှုပ်ထွေးသောစတင်ရန်ယုတ္တိဗေဒကိုပိုမိုကောင်းမွန်စွာစီမံနိုင်ပြီးကုဒ်၏ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်ထိန်းသိမ်းခြင်းကိုလည်းတိုးတက်စေနိုင်သည်။ နည်းပညာများကိုပျင်းရိသောတင်ဆောင်ခြင်းနှင့် cacheing ကဲ့သို့သောနည်းပညာများကိုပေါင်းစပ်ပြီးကျွန်ုပ်တို့သည်စတင်ခြင်း၏ထိရောက်မှုကိုပိုမိုတိုးတက်စေပြီးအရင်းအမြစ်များကိုမလိုအပ်သောအရင်းအမြစ်များကိုရှောင်ရှားနိုင်သည်။
ဤဆောင်းပါးသည် ထမင်းချက် ခြင်းများမှတစ်ဆင့်ထိရောက်သောအရာဝတ်ထုကိုစတင်ရန်မည်သို့အောင်မြင်ရန်နှင့်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်သင်၏ကျင့်ထုံးစွမ်းဆောင်ရည်ကိုထိရောက်စွာတိုးတက်အောင်လုပ်ရမည်ကိုပိုမိုနားလည်ရန်ဤဆောင်းပါးသည်သင့်အားပိုမိုနားလည်ရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။