PHP Development တွင် PDO သည် ဒေတာဘေ့စ်လုပ်ငန်းများကိုကိုင်တွယ်ရန်ကြွယ်ဝပြီးလုံခြုံသောနည်းလမ်းတစ်ခုကိုပေးသည်။ ၎င်းတို့အနက် PDostatement :: FetCoBjection :: Fetchobject သည် query ကိုအတန်းအစား၏သာဓကများသို့တိုက်ရိုက်မြေပုံဆွဲရန်ခွင့်ပြုသည့်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ထို့အပြင်ကျွန်ုပ်တို့သည်အတန်းအစားပြောင်းလွယ်ပြင်လွယ်မှုနှင့်ထိန်းသိမ်းမှုကိုတိုးတက်စေရန်အရာဝတ်ထုဖန်တီးမှုကိုဖြည့်ဆည်းပြီးနောက်ချက်ချင်း dynamically ကိုဖြည့်ဆည်းရန်သို့မဟုတ်လုပ်ငန်းစဉ်ကိုဖြည့်ဆည်းရန်သို့မဟုတ်လုပ်ငန်းစဉ်ကိုဖြည့်ရန်သို့မဟုတ်လုပ်ငန်းစဉ်ကိုဖြည့်ဆည်းရန်သို့မဟုတ်လုပ်ငန်းစဉ်များကိုပေါင်းစပ်ရန်ကျွန်ုပ်တို့ပေါင်းစပ်နိုင်သည်။
ဤဆောင်းပါးသည်မည် သည့် fetchjectobject နှင့်စိတ်ကြိုက်လူတန်းစားနည်းစနစ်များကို အသုံးပြု. မည်သို့အောင်မြင်ရန်မည်သို့အသေးစိတ်ရှင်းပြရန်တိကျသောဥပမာများကိုအသုံးပြုမည်။
ပထမ ဦး စွာ FetchOccoPject ကို အသုံးပြု. အခြေခံဥပမာကိုကြည့်ကြစို့။
<?php
// ဒေတာဘေ့စ်ဆက်သွယ်မှု
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
// ရိုးရှင်းသောစုံစမ်းမှု
$stmt = $pdo->query('SELECT id, name, email FROM users');
// အသုံးပြု fetchObject ရလဒ်များကိုရယူပါ
$user = $stmt->fetchObject();
echo $user->name;
?>
ဤတွင် FetchObject သည် ပုံမှန်အားဖြင့် stdclass အရာဝတ်ထုကိုပြန်ပို့သည်။ အဆင်ပြေပေမယ့်ဒေတာကိုရရှိသောပြီးနောက်ချက်ချင်းအပြောင်းအလဲနဲ့ကဲ့သို့ပြောင်းလွယ်ပြင်လွယ်မဟုတ်။
ကျွန်ုပ်တို့သည် Class Name တွင်ဖြတ်သန်းသွားနိုင်သည် ။
<?php
class User
{
public $id;
public $name;
public $email;
}
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject('User');
echo $user->email;
?>
ဤအချိန်တွင် $ သုံးစွဲသူသည် အသုံးပြုသူ အတန်းအစား၏ဥပမာတစ်ခုဖြစ်လာပြီးအများပြည်သူဆိုင်ရာဂုဏ်သတ္တိများနှင့်အလိုအလျောက်ပြည့်စုံစေသည်။
ဒေတာများကိုဖြည့်ပြီးနောက်ချက်ချင်းပင်အတန်းအစားနည်းလမ်းကိုချက်ချင်းခေါ်ဆိုလိုပါကအချက်အလက်များကို format လုပ်ခြင်းသို့မဟုတ်ပိုမိုသိရှိလိုပါကဆောက်လုပ်ရေးသို့မဟုတ်ထုံးစံနည်းလမ်းကိုသုံးနိုင်သည်။
<?php
class User
{
public $id;
public $name;
public $email;
public function __construct()
{
// ဒီမှာ Preprocessable,ဥပမာပုံစံအတွက် format သည် email
if (!empty($this->email)) {
$this->email = strtolower($this->email);
}
}
}
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject('User');
echo $user->email;
?>
သို့သော်မှတ်ချက်။ ။ Fetchobject ကို အသုံးပြုသောအခါပုံမှန် parameter သည် constructor သို့မကူးပါ။ ထို့ကြောင့် အကယ်. သင်သည် parameters တွေကိုဖြတ်သန်းရန်လိုအပ်ပါကသို့မဟုတ် Initialization process ကိုပိုမိုကောင်းမွန်စွာထိန်းချုပ်လိုပါကအခြားနည်းလမ်းတစ်ခုလိုအပ်သည်။
ပိုမိုပြောင်းလွယ်ပြင်လွယ်ချဉ်းကပ်နည်းမှာအတန်းထဲတွင်စိတ်ကြိုက်အစပြုချက်နည်းလမ်းကိုသတ်မှတ်ရန်ဖြစ်သည်။
<?php
class User
{
public $id;
public $name;
public $email;
public function initialize()
{
if (!empty($this->name)) {
$this->name = ucfirst($this->name);
}
}
}
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject('User');
// ကိုယ်တိုင်စတင်ရန်နည်းလမ်းကိုကိုယ်တိုင်ခေါ်ပါ
if ($user) {
$user->initialize();
}
echo $user->name;
?>
၎င်းသည်စည်းမျဉ်းစည်းကမ်းများအကန့်အသတ်မရှိဘဲအရာဝတ်ထုကိုဖန်တီးပြီးမှဖန်တီးပြီးသည့်နောက်တွင်၎င်းသည်မတရားနှစ်သက်ဖွယ်ကောင်းသောယုတ္တိဗေဒကိုလုပ်ဆောင်ရန်ခွင့်ပြုသည်။
သင်ပိုမိုအလိုအလျောက်ဖြစ်လိုပါက Fetch ပြီးစီးရန်နှင့်တစ်ပုံစံတည်းကိုစတင်ရန်စက်ရုံနည်းလမ်းသေးသေးလေးတစ်ခုကိုသင် encapsate လုပ်နိုင်သည်။
<?php
class User
{
public $id;
public $name;
public $email;
public function initialize()
{
$this->name = ucfirst($this->name);
}
public static function fetchAndInitialize(PDOStatement $stmt)
{
$user = $stmt->fetchObject(self::class);
if ($user instanceof self) {
$user->initialize();
}
return $user;
}
}
// query ပြင်ဆင်မှု
$stmt = $pdo->query('SELECT id, name, email FROM users');
// အသုံးပြု静态方法统一处理
$user = User::fetchAndInitialize($stmt);
echo $user->name;
?>
ဤပုံစံဖြင့်ဒေတာမြေပုံနှင့်ကန ဦး ပြုပြင်ခြင်းသည်လုံးဝဖြုတ်ချပြီး Code ကိုထိန်းသိမ်းရန်နှင့်အတိုင်းအတာကိုပိုမိုလွယ်ကူစေသည်။
Fetchoboject သည် အရာဝတ်ထုကိုဂုဏ်သတ္တိများနှင့်သာဖြည့်ဆည်းပေးပြီး setter method ကိုမခေါ်ပါ။ Properties property များကို setter method မှတဆင့်လုပ်ဆောင်ရန်လိုအပ်ပါကသင်သည်၎င်းကိုကိုယ်တိုင်ခေါ်ရမည်။
ဒေတာဘေ့စ်စားပွဲများသည် Class attribute Name ကိုတင်းကြပ်စွာကိုက်ညီအောင်သေချာအောင်လုပ်ပါ ။
အကယ်. ဒေတာအရင်းအမြစ်သည် fttps://api.gitbox.net/data/users ကဲ့သို့သောပြင်ပ interface တစ်ခုဖြစ်ပါကပြင်ပဒေတာများကိုတိုက်ရိုက်မယုံကြည်ရန်နှင့်အခြေခံ checksum filtering ကိုလုပ်ဆောင်သင့်သည်။
PDostatement :: Fetchobject: Database အတန်းကိုအလျင်အမြန်ပြောင်းရန်နည်းလမ်းများသည်အရာဝတ်ထုဖြစ်ရပ်များတွင်လျင်မြန်စွာပြောင်းလဲရန်နည်းလမ်းဖြစ်သည်။ Class Methods ၏ဆင်ခြင်တုံတရားပုံစံများကိုဆင်ခြင်တုံတရားပုံစံများဖြင့်ကျွန်ုပ်တို့သည် data များကိုဖြည့်ဆည်းပေးသော်လည်းစနစ်၏အတိုင်းအတာနှင့်ထိန်းသိမ်းခြင်းကိုများစွာတိုးတက်ကောင်းမွန်စေရန်ပြောင်းလဲခြင်းဆိုင်ရာအပြောင်းအလဲများကိုအကောင်အထည်ဖော်နိုင်သည်။
အထက်ပါဥပမာမှတစ်ဆင့်အချက်အလက်များကိုဓလေ့ထုံးတမ်းများပြုလုပ်ရန် Custom classများနှင့်မည်သို့လျောက် ပတ် စွာပေါင်းစပ်ပြီးမည်သို့ပေါင်းစပ်နိုင်ကြောင်းသင်ယုံကြည်သည်ဟုကျွန်ုပ်ယုံကြည်သည်။ အနာဂတ်တွင်ဤနည်းစနစ်သည်ကြီးမားသောစီမံကိန်းများတွင်အလွန်အသုံးဝင်လိမ့်မည်။