လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDostatement :: Fetchobject နှင့် Orm Framework ကိုအသုံးပြုခြင်းအတွက်အကြံပြုချက်များ

PDostatement :: Fetchobject နှင့် Orm Framework ကိုအသုံးပြုခြင်းအတွက်အကြံပြုချက်များ

gitbox 2025-05-29

Modern PHP လျှောက်လွှာဖွံ့ဖြိုးတိုးတက်မှုတွင် Orm (Object Reactoral Mapping Mapping Mapping) မူဘောင်သည်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက်အရေးကြီးသောတံတားတစ်ခုဖြစ်လာသည်။ ၎င်းသည် SQL အရေးအသားကိုရိုးရှင်းလွယ်ကူပြီးအရာဝတ်ထု၏ ဦး တည်ချက်ဆိုင်ရာအချက်အလက်များကိုပိုမိုလွယ်ကူစေသည်။ PDostatement :: Fetterobjection သည် PDO မှပေးသောအဆင်ပြေသောအဆင်ပြေသောနည်းလမ်းတစ်ခုဖြစ်သည်။ ကျိုးကြောင်းဆီလျော်စွာပေါင်းစပ်ထားသောနှစ်ခုကိုပေါင်းစပ်ခြင်းသည်ဒေတာအသုံးပြုခွင့်အလွှာ၏စွမ်းဆောင်ရည်နှင့်ကုဒ်၏ထိန်းသိမ်းမှုကိုများစွာတိုးတက်စေနိုင်သည်။

1 ။ PDostatement :: Fetchobject

FetchOccoboject နည်းလမ်းသည် developer များက developer များကိုဒေတာများကိုဒေတာများကိုတိုက်ရိုက်ရယူပြီး၎င်းကိုအရာဝတ်ထုတစ်ခုထဲသို့ထည့်သွင်းထားသည်။ Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 public PDOStatement::fetchObject(string $class_name = "stdClass", array $constructor_args = []): object|false
  • Class_NAME သည် ချက်ချင်းလိုအပ်သည့်အတန်းအစားအမည်ကိုသတ်မှတ်သည်။

  • Constructor_Anggars သည် Class Constructor သို့အငြင်းပွားမှုများကိုဖြတ်သန်းရန်အသုံးပြုသည်။

အကယ်. Class_name ကို မသတ်မှတ်ပါက stdclass အရာဝတ်ထုကိုပုံမှန်အားဖြင့်ပြန်ပို့သည်။

ဥပမာ -

 $stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject();
echo $user->name;

2 ။ ရိုးရာ romm အတွက်အရာဝတ်ထုမြေပုံလုပ်နည်း

Orm Frameworks အများစုတွင် (အယူဝါဒ, eloquent, eloquent, leoquent, propel) တွင်အရာဝတ်ထုမြေပုံကိုရှုပ်ထွေးသောဓါတ်ငည်ယန္တရားများမှတစ်ဆင့်အောင်မြင်သည်။ အခြေခံမူဘောင်များ

  1. query ရလဒ်ခင်းကျင်းကိုရယူပါ။

  2. Array မှတစ်ဆင့် array မှတဆင့်ကြားဖြတ်နှင့်တစ် ဦး ချင်းစီကော်လံတစ်ခုချင်းစီကိုအရာဝတ်ထု၏ဂုဏ်သတ္တိများသို့ assign ။

  3. အသင်းအဖွဲ့များတင်ခြင်း, ပျင်းရိသောတင်ခြင်းစသည်တို့ကိုထောက်ပံ့သည်။

၎င်းတွင်ကြွယ်ဝသောအင်္ဂါရပ်များရှိသော်လည်းဤမြေပုံနည်းသည်ရိုးရှင်းသောအခြေအနေများတွင်နည်းနည်းလောက်ရှုပ်ထွေးနေပြီးစွမ်းဆောင်ရည်သည် FetCOBJOST ကို တိုက်ရိုက် အသုံးပြု. ထိရောက်မှုမရှိပါ။

3 ။ FetchObject ကို Custom Orm Layer ထဲထည့်သွင်းနည်း။

Execution ထိရောက်မှုကိုတိုးတက်စေရန်အတွက် Orm Layer တွင် Orm Layer တွင် Ormer entity Object သို့အလျင်အမြန်ရေးဆွဲမည့်အစားအချက်အလက်များကိုအလျင်အမြန်ထိုးသွင်းရန် Fetchbox တွင်တိုက်ရိုက်သုံးနိုင်သည်။

အခြေခံအကောင်အထည်ဖော်မှုစိတ်ကူးများ:

  1. ဒေတာဘေ့စ်တစ်ခုစီအတွက်သက်ဆိုင်ရာ entity အတန်းကိုသတ်မှတ်ပါ။

  2. entity ဥပမာကိုတိုက်ရိုက်ပြန်ပို့ရန် FCOTOBOTOPOT ကို ခေါ်ဆိုရန် PDO ကိုသုံးပါ။

  3. အခြား orm လုပ်ဆောင်ချက်များနှင့် တွဲဖက်. (ထိုကဲ့သို့သောချွေတာခြင်း, မွမ်းမံခြင်း, ဖျက်ခြင်း, ဖျက်ခြင်း) နှင့်တွဲဖက်။ စီမံပါ။

ရိုးရှင်းသောဥပမာ -

Entity Class ကိုသတ်မှတ်ပါ။

 class User
{
    public int $id;
    public string $name;
    public string $email;

    public function getProfileUrl(): string
    {
        return 'https://gitbox.net/user/' . $this->id;
    }
}

Encapsulated Orm စုံစမ်းနည်းနည်းလမ်း:

 class UserRepository
{
    private PDO $pdo;

    public function __construct(PDO $pdo)
    {
        $this->pdo = $pdo;
    }

    public function find(int $id): ?User
    {
        $stmt = $this->pdo->prepare('SELECT * FROM users WHERE id = :id');
        $stmt->execute(['id' => $id]);
        $user = $stmt->fetchObject(User::class);
        return $user ?: null;
    }
}

အသုံးပြုမှုဥပမာ -

 $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'root', '');
$repository = new UserRepository($pdo);

$user = $repository->find(1);

if ($user) {
    echo $user->name . "'s profile: " . $user->getProfileUrl();
} else {
    echo "User not found.";
}

ဤဥပမာတွင် query data သည် အသုံးပြုသူ စာသင်ခန်းတွင်တိုက်ရိုက်ချိတ်ဆက်ထားပြီးမည်သည့်ထပ်ဆင့်တာဝန်ခွဲစိတ်ကုသမှုကိုမလိုအပ်ပါ။ Object Method ကို use url ( https://gitbox.net/user/1 ) ရယူခြင်းကဲ့သို့သောအရာဝတ်ထုနည်းလမ်းကိုချက်ချင်းအသုံးပြုနိုင်သည်။

4 ။ မှတ်စုများ

  • Field နှင့် attribute အမည်များသည်တသမတ်တည်းဖြစ်ရမည်

  • ဆောက်လုပ်ရေး Parameter Parameter ပြ problem နာ - အကယ်. Entity Class Constructor သည် parameters များရှိပါက၎င်းကို Fetchocboject ၏ဒုတိယ parameter မှတဆင့်ဖြတ်သန်းရန်သတိရပါ။

  • ဒေတာလုံခြုံရေး - ပြင်ပ input ပါ 0 င်ပါက SQL Injection ကိုကာကွယ်ရန်ကြိုတင်သတ်မှတ်ထားသည့်ထုတ်ပြန်ချက်များလိုအပ်သည်။

V. တိုးချဲ့လျှောက်လွှာ

FetchOccoboject ကို ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အလွယ်တကူအောင်မြင်နိုင်သည်။

  • အကြှနျုပျ၏အသုတ်အရာဝတ္ထုများစုဆောင်းခြင်း

  • ပျင်းရိသောအရာဝတ်ထု -based loading

  • ရိုးရှင်းသောဆက်နွယ်မှုမှာ (ဥပမာ - မှများစွာသောအသင်းအဖွဲ့ကဲ့သို့)

အလိုအလျောက်မျိုးဆက်ဆိုင်ရာ entity အတန်းအတန်းများနှင့်အသုတ်စစ်ဆင်ရေးကဲ့သို့သောမဟာဗျူဟာများနှင့်ထပ်မံပူးပေါင်းပါဝင်ပါ။