လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MVC Mode တွင် Even MySQLI_RESELT အသုံးပြုမှုကိုလှပစွာ encapsult

MVC Mode တွင် Even MySQLI_RESELT အသုံးပြုမှုကိုလှပစွာ encapsult

M66 2025-05-28

PHP ကို ​​အသုံးပြု. အထူးသဖြင့် MVC (MVC Controller) ဗိသုကာတွင် Database စစ်ဆင်ရေးကိုမည်သို့စီမံခန့်ခွဲရမည်နည်း။ MySQLI extension သည် PHP တွင် MySQL database ကို 0 င်ရောက်နိုင်သည့်နည်းလမ်းတစ်ခုဖြစ်ပြီးဒေတာဘေ့စ်စုံစမ်းမှုမှရလဒ်ရရှိရန် MySQLI_RESULT function ကိုအသုံးပြုသည်။ MVC Architecture တွင်ဒေတာဘေ့စ်မေးမြန်းချက်များနှင့်ရလဒ်အစုများကို Controller တွင်တိုက်ရိုက်လုပ်ဆောင်ပါက Code ကို bloated, ထိန်းသိမ်းရန်ခက်ခဲစေနိုင်သည်။ ထို့ကြောင့် code ၏ထိန်းသိမ်းနိုင်မှုနှင့်အကျုံး 0 င်နိုင်မှုကိုတိုးတက်စေရန် MySQLI_RESURRESURT လုပ်ဆောင်မှုကိုကြွေးကြော်ပုံသည် developer များဖြေရှင်းရန်လိုအပ်ကြောင်းပြ a နာတစ်ခုဖြစ်သည်။

ဤဆောင်းပါးသည် MVC mode တွင် MySQLI_RESULET ကို အသုံးပြု. ပိုမိုကျယ်ကျယ်ပြန့်ပြန့်ကိုရှင်းရှင်းလင်းလင်းဖော်ပြပြီးသက်ဆိုင်ရာကုဒ်များဥပမာများကိုပေးသည်။

1 ။ MVC ဗိသုကာပညာရှိတာဝန်များကိုနားလည်ပါ

MVC ဗိသုကာတွင်တာ 0 န် 0 တ္တရားများမှာအလွန်အရေးကြီးသည်။

  • Model - ဒေတာများကဲ့သို့သောအချက်အလက်ရင်းမြစ်များနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းအတွက်တာ 0 န်ရှိသည်။

  • View : ဒေတာပြသမှုအတွက်တာဝန်ရှိသည်, များသောအားဖြင့်ဒေတာဘေ့စ်လုပ်ငန်းများမပါ 0 င်ပါ။

  • Controller : သုံးစွဲသူထည့်သွင်းမှုကိုလက်ခံခြင်း, အချက်အလက်များကိုအချက်အလက်များကိုပြုလုပ်ရန်နှင့်ရလဒ်ကိုရှုမြင်ရန်အဆိုပြုချက်သို့ကူးပြောင်းသည်။

Code ကိုရှင်းရှင်းလင်းလင်းနှင့်စည်းလုံးညီညွတ်မှုကိုထိန်းသိမ်းထားနိုင်ရန်အတွက် Datacase ရှိ Datacase နှင့်အပြန်အလှန်ဆက်သွယ်မှု၏ယုတ္တိဗေဒကိုအာရုံစိုက်သင့်ပြီး Controller သည်အချက်အလက်များကိုရရန်မော်ဒယ်ရှိနည်းလမ်းများကိုသာခေါ်ဆိုရန်လိုအပ်သည်။

2 ။ MySQLI_RESELT ကို encapsult ရန်လိုအပ်သည်

MySQLI_RESult Object သည်စုံစမ်းမှုကြေညာချက်ကိုအကောင်အထည်ဖော်ခြင်းဖြင့်ပြန်လာသောရလဒ်ဖြစ်သည်။ Code ၏ထိန်းသိမ်းနိုင်မှုနှင့်ပမာဏကိုတိုးတက်စေရန်အတွက်ကျွန်ုပ်တို့သည် MySQLI_RESULT အရာဝတ်ထုကို Controller တွင်တိုက်ရိုက်ချိတ်ဆက်ခြင်းကိုရှောင်ရှားသင့်သည်။ အကြောင်းပြချက်များပါဝင်သည်:

  1. Code မိတ္တူပွားခြင်း

  2. စမ်းသပ်ရန်ခက်ခဲသည် - MySQLI_RESULT အရာဝတ်ထုကိုတိုက်ရိုက်ခြယ်လှယ်ခြင်းသည်ယူနစ်စမ်းသပ်ခြင်းကိုခက်ခဲစေသည်။

  3. ဆင်းရဲနွမ်းပါးခြင်း - MySQLI_RESELT ကို တိုက်ရိုက်လည်ပတ်ခြင်းကဒေတာဘေ့စ်ကိုနောက်မှချဲ့ထွင်ရန်ခက်ခဲစေလိမ့်မည် (MySQL မှ Postgresql သို့ပြောင်းခြင်း)

ထို့ကြောင့်ကျွန်ုပ်တို့သည် MySQLI_RESULT ၏လုပ်ဆောင်မှုကိုပိတ်ထားသင့်သည်။ ၎င်းသည်ကွဲပြားခြားနားသောအခြေအနေများတွင်ပြန်လည်အသုံးချနိုင်ပြီးပိုမိုလွယ်ကူစွာချဲ့ထွင်နိုင်သည့်လွတ်လပ်သော module တစ်ခုဖြစ်လာရန်အတွက်ကျွန်ုပ်တို့သည် MySQLI_RESULT OF ရှုခင်းကို oncapsate သင့်သည်။

3 ။ MySQLI_RESELT ၏အကောင်အထည်ဖော်မှုကို encapsulating

3.1 ။ ဒေတာဘေ့စ်စိတ်တဇအတန်းကိုဖန်တီးပါ

ပထမ ဦး စွာကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုများနှင့်စုံစမ်းမှုစစ်ဆင်ရေးများကိုကိုင်တွယ်ရန်တာ 0 န်ယူသည့်ဒေတာဘေ့စ်စိတ်တဇအတန်းကိုဖန်တီးနိုင်သည်။ ဤအတန်းသည် Controller တွင် MySQLI_RESULT အရာဝတ်ထုကိုတိုက်ရိုက်မကိုင်တွယ်နိုင်အောင် Encapsulated encapsulated set ကိုပြန်ပို့လိမ့်မည်။

 <?php

abstract class Database {
    protected $connection;

    public function __construct($host, $username, $password, $dbname) {
        $this->connection = new mysqli($host, $username, $password, $dbname);

        if ($this->connection->connect_error) {
            die("Connection failed: " . $this->connection->connect_error);
        }
    }

    abstract public function query($sql);
}

?>

3.2 ။ တိကျသောဒေတာဘေ့စ်စံပြလူတန်းစားကိုဖန်တီးပါ

ထို့နောက် ဒေတာဘေ့စ် အတန်းမှအမွေဆက်ခံသည့်တိကျသောဒေတာဘေ့စ်အတန်းကိုဖန်တီးပါ။ ဤအတန်းသည်ရလဒ်ကိုရှာဖွေခြင်းနှင့်ရယူခြင်း၏လုပ်ငန်းများကို encapsultate ပါလိမ့်မည်။

 <?php

class MySQLDatabase extends Database {

    public function query($sql) {
        $result = $this->connection->query($sql);
        if ($result === false) {
            return false; // စုံစမ်းမှုပျက်ကွက်သည့်အခါပြန်လာပါ false
        }
        return new MySQLResult($result); // encapsulated ရလဒ်ကိုသတ်မှတ်ထားတဲ့အရာဝတ်ထုကိုပြန်ပို့သည်
    }
}

?>

3.3 ။ MySQLI_RESELT ကို encapsulate လုပ်ရန် MySQLRESEL လူတန်းစားကိုဖန်တီးပါ

နောက်တစ်ခုက MySQLI_RESult အရာဝတ်ထုကို encapsult လုပ်ဖို့ MySQLRESEL လူတန်းစားကိုဖန်တီးတယ်။ ဤအတန်းသည်စုံစမ်းမှုရလဒ်များ၏လုပ်ဆောင်မှုကိုရိုးရှင်းစေရန်အဆင်ပြေသောနည်းလမ်းအချို့ကိုပေးလိမ့်မည်။

 <?php

class MySQLResult {
    private $result;

    public function __construct(mysqli_result $result) {
        $this->result = $result;
    }

    public function fetchAll() {
        return $this->result->fetch_all(MYSQLI_ASSOC); // ဒေတာအားလုံးကိုရယူပါ
    }

    public function fetchRow() {
        return $this->result->fetch_assoc(); // ဒေတာလိုင်းတစ်ခုရယူပါ
    }

    public function numRows() {
        return $this->result->num_rows; // ရလဒ်အစုအဝေးအတွက်အတန်းအရေအတွက်ကိုရယူပါ
    }

    public function free() {
        $this->result->free(); // ရလဒ်ကိုလွှတ်ပေးရန်
    }
}

?>

ဤအတန်းတွင် MySQLI_RESELT ၏အများသုံးလုပ်ငန်းများကိုကျွန်ုပ်တို့ onscapsult lets lets all all all all all all all all all all all all all all all all all all all lev lev lev lev and lev lev lev lev ။ ၎င်းသည်ဒေတာဘေ့စ်စုံစမ်းမှုများစစ်ဆင်ရေးကိုပိုမိုတိကျပြီးထိန်းသိမ်းရန်လွယ်ကူစေသည်။

4 ။ Controller သည်ဒေတာဘေ့စ်ပုံစံကိုအသုံးပြုသည်

Controller တွင် MySQLI_RESULT OFF ကိုမည်သို့လည်ပတ်ရမည်ကိုဂရုမစိုက်ဘဲစံနမူနာရှိနည်းလမ်းများကိုခေါ်ဆိုခြင်းဖြင့်အချက်အလက်များကိုရယူနိုင်သည်။

 <?php

class UserController {

    private $db;

    public function __construct() {
        $this->db = new MySQLDatabase('localhost', 'root', '', 'my_database');
    }

    public function getUserList() {
        $sql = "SELECT * FROM users";
        $result = $this->db->query($sql);

        if ($result === false) {
            echo "Query failed.";
            return;
        }

        $users = $result->fetchAll(); // အသုံးပြုသူအချက်အလက်အားလုံးကိုရယူပါ
        foreach ($users as $user) {
            echo "User: " . $user['name'] . "<br>";
        }

        $result->free(); // ရလဒ်ကိုလွှတ်ပေးရန်
    }
}

?>

Controller တွင်ရှာဖွေမှုအတွက်ဒေတာဘေ့စ်ပုံစံ၏ စုံစမ်းမှု နည်းလမ်းကိုကျွန်ုပ်တို့ခေါ်ဆိုသည်။ ပြန်လာသော MySQLRESELT OFF သည် fetterall () fetterall () fetchall () fetchrow () ကို အသုံးပြု. ရလဒ်အားလုံးကိုရယူနိုင်သည်။ ဤနည်းအားဖြင့် Controller ၏ကုဒ်သည်အလွန်အတိုချုပ်ဖြစ်လာပြီးယုတ္တိဗေဒကိုဒေတာဘေ့စ်လည်ပတ်မှုနှင့်လုံးဝကွဲကွာသွားပြီး၎င်းကိုထိန်းသိမ်းရန်လွယ်ကူစေရန်လွယ်ကူသည်။

5 ။ အကျဉ်းချုပ်

MVC Architecture တွင် MySQLI_RESULT OFF ကိုဖုံးအုပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် MVC ဗိသုကာပုံစံတွင်ဒေတာဘေ့စ်လုပ်ငန်းများကိုအာရုံစိုက်ရုံသာမကကျွန်ုပ်တို့၏ကုဒ်၏ထိန်းသိမ်းနိုင်မှုနှင့်ပမာဏကိုလည်းတိုးတက်စေသည်။ Encapsulated MySQLRESEL အတန်းကိုအသုံးပြုခြင်းသည် query query ကိုလွယ်ကူစွာပြုလုပ်နိုင်သည်။ Controller ကိုအခြေခံဒေတာဘေ့စ်အကောင်အထည်ဖော်မှုကိုဂရုမစိုက်ဘဲစီးပွားရေးယုတ္တိဗေဒကိုအာရုံစိုက်ရန်ခွင့်ပြုသည်။ ဤချဉ်းကပ်မှုသည်အဖွဲ့ပူးပေါင်းမှုအတွက်ကောင်းကျိုးများရှိပြီးနောက်ပိုင်းတွင်တိုးချဲ့ခြင်းအတွက်တိုးချဲ့မှုရှိသည်။