PHP တွင် PDostatement :: FetterObject Method သည်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PDO (PHP Data ords) ကိုအသုံးပြုသောအခါ PDO (PHP Data ords) ကိုအသုံးပြုသောအခါအလွန်များသောအားဖြင့်အသုံးပြုလေ့ရှိသည်။ ၎င်းသည်ကျွန်ုပ်တို့အားဒေတာဘေ့စ်စုံစမ်းမှုရလဒ်များကိုအရာဝတ်ထုတစ်ခုသို့မြေပုံဆွဲရန်ခွင့်ပြုသည်။ သို့သော်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်လိုအပ်ချက်များနှင့်ကြုံတွေ့ရလေ့ရှိသည် - ဒေတာတူနေရာမှအရာဝတ်ထုဂုဏ်သတ္တိများကိုရယူသည့်အခါဒေတာအမျိုးအစားကိုသင့်လျော်သောအမျိုးအစားသို့အလိုအလျောက်ပြောင်းလဲရန်မျှော်လင့်ပါသည်။ ဥပမာအားဖြင့်, int type data ကိုဒေတာဘေ့ စ် ရှိ Int Type attribute သို့ပြောင်းပါ။
ဤဆောင်းပါးသည် PDostatement မှဤအလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုရှင်းပြပါမည်။
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');
အထက်ပါကုဒ်တွင်စုံစမ်းမှုရလဒ်သည် အသုံးပြုသူ အတန်းအစားတစ်ခု၏အရာဝတ်ထုတစ်ခုသို့ဆက်စပ်လိမ့်မည်။
များသောအားဖြင့်ဒေတာဘေ့စ်ရှိအချက်အလက်များကိုသင်မျှော်လင့်ထားသည့်အမျိုးအစားတွင်တိုက်ရိုက်မပြန်ပါ။ ဥပမာအားဖြင့်ဒေတာဘေ့စ်တစ်ခုမှရက်စွဲများနှင့်အချိန်များသည်များသောအားဖြင့် string type အမျိုးအစားများဖြစ်ပြီး၎င်းတို့အား PHP ၏ datetime အရာဝတ်ထုများသို့ပြောင်းလဲစေလိုသည်။ တနည်းအားဖြင့်ဒေတာဘေ့စ်ရှိကိန်းဂဏန်းများသည်ကြိုးများမဟုတ်ဘဲကိန်းဂဏန်းများကိုအလိုအလျောက်ပြောင်းလဲပစ်သင့်သည်။
ဤပြ problems နာများကိုဖြေရှင်းရန်အရာဝတ်ထုကိုရယူစဉ်အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုပြုလုပ်နိုင်သည်။
အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်ရန်ကျွန်ုပ်တို့သည် 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 ကိုအလိုအလျောက်ကူးပြောင်းသည်整数的年龄
အပေါ်ကဥပမာမှာ __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;
}
PDostatement :: FetCoBjection FlechOccoboject နှင့် Magic Method သည်အတန်းထဲတွင်မှော်နည်းလမ်းကိုကျွန်ုပ်တို့အလွယ်တကူအကောင်အထည်ဖော်နိုင်ပါသည်။ ဤချဉ်းကပ်နည်းသည်ကုဒ်ကိုရိုးရှင်းရုံသာမကလျှောက်လွှာတွင်အချက်အလက်အမျိုးအစားများကိုလိုက်နာရန်လည်းသေချာစေသည်။ __GET နှင့် __SET နည်းလမ်းများကိုပြောင်းလွယ်ပြင်လွယ်ဖြင့်အသုံးပြုရန်အတွက်ကျွန်ုပ်တို့သည်ကွဲပြားခြားနားသောအမျိုးအစားပြောင်းလဲခြင်းယုတ္တိဗေဒကိုအမှန်တကယ်လိုအပ်ချက်များနှင့်အညီစိတ်ကြိုက်ပြုပြင်နိုင်သည်။
PHP Development တွင် Database Query တွင်ပိုမိုထိရောက်စွာလုပ်ဆောင်ရန်နှင့်အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းကိုအကောင်အထည်ဖော်ရန်ဤဆောင်းပါးသည်သင့်အားကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။