Modern PHP လျှောက်လွှာဖွံ့ဖြိုးတိုးတက်မှုတွင် Orm (Object Reactoral Mapping Mapping Mapping) မူဘောင်သည်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက်အရေးကြီးသောတံတားတစ်ခုဖြစ်လာသည်။ ၎င်းသည် SQL အရေးအသားကိုရိုးရှင်းလွယ်ကူပြီးအရာဝတ်ထု၏ ဦး တည်ချက်ဆိုင်ရာအချက်အလက်များကိုပိုမိုလွယ်ကူစေသည်။ PDostatement :: Fetterobjection သည် PDO မှပေးသောအဆင်ပြေသောအဆင်ပြေသောနည်းလမ်းတစ်ခုဖြစ်သည်။ ကျိုးကြောင်းဆီလျော်စွာပေါင်းစပ်ထားသောနှစ်ခုကိုပေါင်းစပ်ခြင်းသည်ဒေတာအသုံးပြုခွင့်အလွှာ၏စွမ်းဆောင်ရည်နှင့်ကုဒ်၏ထိန်းသိမ်းမှုကိုများစွာတိုးတက်စေနိုင်သည်။
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;
Orm Frameworks အများစုတွင် (အယူဝါဒ, eloquent, eloquent, leoquent, propel) တွင်အရာဝတ်ထုမြေပုံကိုရှုပ်ထွေးသောဓါတ်ငည်ယန္တရားများမှတစ်ဆင့်အောင်မြင်သည်။ အခြေခံမူဘောင်များ
query ရလဒ်ခင်းကျင်းကိုရယူပါ။
Array မှတစ်ဆင့် array မှတဆင့်ကြားဖြတ်နှင့်တစ် ဦး ချင်းစီကော်လံတစ်ခုချင်းစီကိုအရာဝတ်ထု၏ဂုဏ်သတ္တိများသို့ assign ။
အသင်းအဖွဲ့များတင်ခြင်း, ပျင်းရိသောတင်ခြင်းစသည်တို့ကိုထောက်ပံ့သည်။
၎င်းတွင်ကြွယ်ဝသောအင်္ဂါရပ်များရှိသော်လည်းဤမြေပုံနည်းသည်ရိုးရှင်းသောအခြေအနေများတွင်နည်းနည်းလောက်ရှုပ်ထွေးနေပြီးစွမ်းဆောင်ရည်သည် FetCOBJOST ကို တိုက်ရိုက် အသုံးပြု. ထိရောက်မှုမရှိပါ။
Execution ထိရောက်မှုကိုတိုးတက်စေရန်အတွက် Orm Layer တွင် Orm Layer တွင် Ormer entity Object သို့အလျင်အမြန်ရေးဆွဲမည့်အစားအချက်အလက်များကိုအလျင်အမြန်ထိုးသွင်းရန် Fetchbox တွင်တိုက်ရိုက်သုံးနိုင်သည်။
ဒေတာဘေ့စ်တစ်ခုစီအတွက်သက်ဆိုင်ရာ entity အတန်းကိုသတ်မှတ်ပါ။
entity ဥပမာကိုတိုက်ရိုက်ပြန်ပို့ရန် FCOTOBOTOPOT ကို ခေါ်ဆိုရန် PDO ကိုသုံးပါ။
အခြား orm လုပ်ဆောင်ချက်များနှင့် တွဲဖက်. (ထိုကဲ့သို့သောချွေတာခြင်း, မွမ်းမံခြင်း, ဖျက်ခြင်း, ဖျက်ခြင်း) နှင့်တွဲဖက်။ စီမံပါ။
class User
{
public int $id;
public string $name;
public string $email;
public function getProfileUrl(): string
{
return 'https://gitbox.net/user/' . $this->id;
}
}
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 ) ရယူခြင်းကဲ့သို့သောအရာဝတ်ထုနည်းလမ်းကိုချက်ချင်းအသုံးပြုနိုင်သည်။
Field နှင့် attribute အမည်များသည်တသမတ်တည်းဖြစ်ရမည် ။
ဆောက်လုပ်ရေး Parameter Parameter ပြ problem နာ - အကယ်. Entity Class Constructor သည် parameters များရှိပါက၎င်းကို Fetchocboject ၏ဒုတိယ parameter မှတဆင့်ဖြတ်သန်းရန်သတိရပါ။
ဒေတာလုံခြုံရေး - ပြင်ပ input ပါ 0 င်ပါက SQL Injection ကိုကာကွယ်ရန်ကြိုတင်သတ်မှတ်ထားသည့်ထုတ်ပြန်ချက်များလိုအပ်သည်။
FetchOccoboject ကို ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အလွယ်တကူအောင်မြင်နိုင်သည်။
အကြှနျုပျ၏အသုတ်အရာဝတ္ထုများစုဆောင်းခြင်း
ပျင်းရိသောအရာဝတ်ထု -based loading
ရိုးရှင်းသောဆက်နွယ်မှုမှာ (ဥပမာ - မှများစွာသောအသင်းအဖွဲ့ကဲ့သို့)
အလိုအလျောက်မျိုးဆက်ဆိုင်ရာ entity အတန်းအတန်းများနှင့်အသုတ်စစ်ဆင်ရေးကဲ့သို့သောမဟာဗျူဟာများနှင့်ထပ်မံပူးပေါင်းပါဝင်ပါ။