လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> pdostatement မှတစ်ဆင့်အရာဝတ်ထုဂုဏ်သတ္တိများကိုရယူသည့်အခါအလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း :: FetCoboject

pdostatement မှတစ်ဆင့်အရာဝတ်ထုဂုဏ်သတ္တိများကိုရယူသည့်အခါအလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း :: FetCoboject

gitbox 2025-05-12

PHP တွင် PDostatement :: FetterObject Method သည်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PDO (PHP Data ords) ကိုအသုံးပြုသောအခါ PDO (PHP Data ords) ကိုအသုံးပြုသောအခါအလွန်များသောအားဖြင့်အသုံးပြုလေ့ရှိသည်။ ၎င်းသည်ကျွန်ုပ်တို့အားဒေတာဘေ့စ်စုံစမ်းမှုရလဒ်များကိုအရာဝတ်ထုတစ်ခုသို့မြေပုံဆွဲရန်ခွင့်ပြုသည်။ သို့သော်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်လိုအပ်ချက်များနှင့်ကြုံတွေ့ရလေ့ရှိသည် - ဒေတာတူနေရာမှအရာဝတ်ထုဂုဏ်သတ္တိများကိုရယူသည့်အခါဒေတာအမျိုးအစားကိုသင့်လျော်သောအမျိုးအစားသို့အလိုအလျောက်ပြောင်းလဲရန်မျှော်လင့်ပါသည်။ ဥပမာအားဖြင့်, int type data ကိုဒေတာဘေ့ စ် ရှိ Int Type attribute သို့ပြောင်းပါ။

ဤဆောင်းပါးသည် PDostatement မှဤအလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုရှင်းပြပါမည်။

1 ။ PDostatement :: Fetchobject ဆိုတာဘာလဲ။

PDostatement :: Fetterobjection သည် PDO မှပေးသော PDO မှပေးသောနည်းလမ်းတစ်ခုဖြစ်သည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 $object = $stmt->fetchObject($className);
  • $ stmt သည် PDO :: ပြင်ဆင်ခြင်း နှင့် PDO :: မှတစ်ဆင့်ကွပ်မျက်ခံရသည့်ကြေငြာချက်လက်ကိုင်ဖြစ်သည်။

  • $ Classname သည်သင်မြေပုံဆွဲလိုသည့်အတန်းအစားအမည်ဖြစ်သည်။ ၎င်းသည်ထုံးစံအတန်းသို့မဟုတ် stdclass (i.e. php default ပုံမှန်အတန်းအစား) ဖြစ်နိုင်သည်။

ဥပမာအားဖြင့်:

 $stmt = $pdo->query("SELECT * FROM users");
$user = $stmt->fetchObject('User');

အထက်ပါကုဒ်တွင်စုံစမ်းမှုရလဒ်သည် အသုံးပြုသူ အတန်းအစားတစ်ခု၏အရာဝတ်ထုတစ်ခုသို့ဆက်စပ်လိမ့်မည်။

2 ။ အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းအတွက်လိုအပ်ချက်များ

များသောအားဖြင့်ဒေတာဘေ့စ်ရှိအချက်အလက်များကိုသင်မျှော်လင့်ထားသည့်အမျိုးအစားတွင်တိုက်ရိုက်မပြန်ပါ။ ဥပမာအားဖြင့်ဒေတာဘေ့စ်တစ်ခုမှရက်စွဲများနှင့်အချိန်များသည်များသောအားဖြင့် string type အမျိုးအစားများဖြစ်ပြီး၎င်းတို့အား PHP ၏ datetime အရာဝတ်ထုများသို့ပြောင်းလဲစေလိုသည်။ တနည်းအားဖြင့်ဒေတာဘေ့စ်ရှိကိန်းဂဏန်းများသည်ကြိုးများမဟုတ်ဘဲကိန်းဂဏန်းများကိုအလိုအလျောက်ပြောင်းလဲပစ်သင့်သည်။

ဤပြ problems နာများကိုဖြေရှင်းရန်အရာဝတ်ထုကိုရယူစဉ်အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုပြုလုပ်နိုင်သည်။

3 ။ မှော်နည်းလမ်းများမှတဆင့်အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း

အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်ရန်ကျွန်ုပ်တို့သည် Magic Methods __GATS __GET နှင့် __. PHP အတန်းထဲတွင် __. ကိုအသုံးချနိုင်သည်။ ဤနည်းလမ်းများသည်အရာဝတ်ထုဂုဏ်သတ္တိများကိုရယူသည့်အခါစိတ်ကြိုက်ပြုပြင်ခြင်းပြုလုပ်ရန်ခွင့်ပြုသည်။ ဤနည်းစနစ်နှစ်ခုမှတစ်ဆင့်ဒေတာအမျိုးအစားပြောင်းလဲခြင်းကိုကျွန်ုပ်တို့အကောင်အထည်ဖော်နိုင်သည်။

ဤတွင်အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်ခြင်း၏ဥပမာတစ်ခုဖြစ်သည်။

 class User
{
    private $data = [];

    // attribute ကိုတန်ဖိုးများကိုသတ်မှတ်ရန်အသုံးပြုခဲ့သည်
    public function __set($name, $value)
    {
        $this->data[$name] = $value;
    }

    // attribute တန်ဖိုးများကိုရရန်အသုံးပြုခဲ့သည်,အမျိုးအစားပြောင်းလဲခြင်းလုပ်ဆောင်ပါ
    public function __get($name)
    {
        $value = $this->data[$name] ?? null;

        // အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်း
        if ($name === 'created_at' || $name === 'updated_at') {
            // string ကိုကူးပြောင်း DateTime ကန့်ကွက်
            return new DateTime($value);
        }

        if ($name === 'age') {
            // string ကိုကူးပြောင်း整数
            return (int)$value;
        }

        // အဘယ်သူမျှမအထူးအမျိုးအစားပြောင်းလဲခြင်းရှိလျှင်,မူရင်းတန်ဖိုးကိုပြန်သွားပါ
        return $value;
    }
}

$pdo = new PDO('mysql:host=gitbox.net;dbname=test', 'root', 'password');
$stmt = $pdo->query("SELECT id, name, created_at, age FROM users");
$stmt->setFetchMode(PDO::FETCH_CLASS, 'User');

$user = $stmt->fetchObject('User');
echo $user->created_at->format('Y-m-d H:i:s');  // output ကိုအလိုအလျောက်ကူးပြောင်းသည် DateTime ရက်စွဲ
echo $user->age;  // output ကိုအလိုအလျောက်ကူးပြောင်းသည်整数的年龄

4 ။ ပိုမိုရှုပ်ထွေးသောအမျိုးအစားပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်ပါ

အပေါ်ကဥပမာမှာ __GET နှင့် __s ကို ရိုးရှင်းတဲ့အမျိုးအစားပြောင်းလဲခြင်းအတွက်အသုံးပြုသည်။ သို့သော် JSON ကြိုးများကို array များသို့ပြောင်းလဲခြင်း, ငွေပမာဏကိုရေပေါ်နံပါတ်များသို့ပြောင်းခြင်း,

__Get နည်းလမ်းကိုလိုအပ်သည့်နည်းလမ်းအမျိုးမျိုးနှင့်အမျိုးမျိုးသောဒေတာအမျိုးအစားများကိုကိုင်တွယ်ရန်ကွဲပြားခြားနားသောအခြေအနေများနှင့်ယုတ္တိဗေဒကိုအသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်:

 public function __get($name)
{
    $value = $this->data[$name] ?? null;

    if ($name === 'preferences') {
        // သေတမ်းစာ JSON strings များကို array သို့ပြောင်းပါ
        return json_decode($value, true);
    }

    if ($name === 'price') {
        // string ကိုကူးပြောင်း浮动数字
        return (float)$value;
    }

    // အပြောင်းအလဲနဲ့အခြားအမျိုးအစားများ
    return $value;
}

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

PDostatement :: FetCoBjection FlechOccoboject နှင့် Magic Method သည်အတန်းထဲတွင်မှော်နည်းလမ်းကိုကျွန်ုပ်တို့အလွယ်တကူအကောင်အထည်ဖော်နိုင်ပါသည်။ ဤချဉ်းကပ်နည်းသည်ကုဒ်ကိုရိုးရှင်းရုံသာမကလျှောက်လွှာတွင်အချက်အလက်အမျိုးအစားများကိုလိုက်နာရန်လည်းသေချာစေသည်။ __GET နှင့် __SET နည်းလမ်းများကိုပြောင်းလွယ်ပြင်လွယ်ဖြင့်အသုံးပြုရန်အတွက်ကျွန်ုပ်တို့သည်ကွဲပြားခြားနားသောအမျိုးအစားပြောင်းလဲခြင်းယုတ္တိဗေဒကိုအမှန်တကယ်လိုအပ်ချက်များနှင့်အညီစိတ်ကြိုက်ပြုပြင်နိုင်သည်။

PHP Development တွင် Database Query တွင်ပိုမိုထိရောက်စွာလုပ်ဆောင်ရန်နှင့်အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်ရန်ဤဆောင်းပါးသည်သင့်အားကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။