မိမိကိုယ်ပိုင် MVC Framework တွင် Model အားလုံး၏ အမေ (Parent) အား အကောင်အထည်ဖော်ခြင်း
Model အားလုံး၏ အမေ (Parent) class အား အကောင်အထည်ဖော်ကြပါစို့။
<?php
namespace Core;
class Model
{
private $link;
public function __construct()
{
$this->link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
mysqli_query($this->link, "SET NAMES 'utf8'");
}
protected function findOne($query)
{
// ဒီနေရာမှာ ကုဒ်တစ်ချို့ ရှိလိမ့်မည်
}
protected function findMany($query)
{
// ဒီနေရာမှာ ကုဒ်တစ်ချို့ ရှိလိမ့်မည်
}
}
?>
မြင်တွေ့ရသည့်အတိုင်း၊ class ၏ constructor အတွင်းတွင် ကျွန်ုပ်တို့သည် ဒေတာဘေ့စ်သို့ ချိတ်ဆက်ခြင်းကို လုပ်ဆောင်ပါသည်။ သို့သော် ပြဿနာတစ်ခု ရှိပါသည်- ဖန်တီးလိုက်သော model တစ်ခုစီသည် (အကယ်၍ controller ၏ တစ်ခုတည်းသော action အတွင်းတွင် model အများအပြား ရှိခဲ့ပါက) ၎င်း၏ ကိုယ်ပိုင် ဒေတာဘေ့စ်ချိတ်ဆက်မှုကို လုပ်ဆောင်ပါလိမ့်မည်၊ ၎င်းသည် အသင့်တော်ဆုံး မဟုတ်ပါ။
ပထမဆုံး ဖန်တီးလိုက်သော model အတွက်သာ ဒေတာဘေ့စ်သို့ ချိတ်ဆက်မှု
ကို ဖန်တီးပြီး၊ ကျန်သော model များသည် ဖန်တီးပြီးသား ချိတ်ဆက်မှုကို
အသုံးပြုစေရန် ပြုလုပ်ကြပါစို့။ ၎င်းအတွက် link property အား
static ဖြစ်စေပါမည်။
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // property သတ်မှတ်ထားခြင်း မရှိပါက၊ ချိတ်ဆက်ပါ
self::$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
mysqli_query(self::$link, "SET NAMES 'utf8'");
}
}
protected function findOne($query)
{
}
protected function findMany($query)
{
}
}
?>
ပေးထားသော Model class ၏ကုဒ်အား ကူးယူပြီး
/core/Model.php ဖိုင်တွင် ထားရှိပါ။
ဤ class အတွင်း findOne method အား အကောင်အထည်ဖော်ပါ။
၎င်း၏လုပ်ဆောင်ချက်ကို စမ်းသပ်ပါ။
ဤ class အတွင်း findMany method အား အကောင်အထည်ဖော်ပါ။
၎င်း၏လုပ်ဆောင်ချက်ကို စမ်းသပ်ပါ။