PDostatement :: Database Development အတွက် PHP ကို PHP ကိုအသုံးပြုသောအခါ FetCoboject သည်အလွန်လက်တွေ့လုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်းသည် query ကိုရိုးရာ Associative Array သို့မဟုတ် Index Array များအစားအရာဝတ်ထုတစ်ခုသို့တိုက်ရိုက်မြေပုံဆွဲနိုင်သည်။ ၎င်း၏ parameter သည် configuration နှင့်လက်တွေ့ application ကိုနားလည်ခြင်းသည်သင်၏ကုဒ်ကိုပိုမိုရှင်းလင်းစွာ,
ဤဆောင်းပါးသည်နက်ရှိုင်းစွာရှင်းပြပါမည်။
fetchocbject ၏အခန်းကဏ်။
parameters တွေကိုအသေးစိတ်ရှင်းပြချက်
ဘုံအသုံးပြုမှုအခြေအနေများနှင့်ကြိုတင်ကာကွယ်မှုများ
နမူနာကုဒ်သရုပ်ပြ
များသော အား ဖြင့် SQL Query များကိုကွပ်မျက်ခံရပြီးနောက်ရလဒ် အတန်းတစ်ခုဖြစ် သည့် Associative ခင်းကျင်းခြင်း,
အတိုချုပ်ပြောရလျှင်၎င်းသည်သင့်အားတင်းကျပ်သောအချက်အလက်များအစားဒေတာဘေ့စ်မှတိုက်ရိုက်သက်ရှိအရာဝတ်ထုကိုတိုက်ရိုက်ရယူရန်ခွင့်ပြုသည်။
FetchOccject ၏အခြေခံလက်မှတ်သည်
public PDOStatement::fetchObject(?string $class = "stdClass", array $constructorArgs = []): object|false
parameter သည်ရှင်းလင်းချက်:
တေးရေး | ဥပမာပြပါ |
---|---|
$ အတန်း | optionally , instantiate ဖို့ class name ကိုသတ်မှတ်ပါ။ default သည် stdclass ဖြစ်သည်။ သင့်တွင်ကိုယ်ပိုင်စံပြအတန်းအစားရှိပါကဤနေရာတွင်သင်သတ်မှတ်နိုင်သည်။ |
$ ဆောက်လုပ်ရေးဆောက်လုပ်ရေး | optional ကို , ဆောက်လုပ်ရေး parameter ကိုခင်းကျင်း။ အတန်းတစ်လူတန်းစားကိုချက်ချင်း parameters တွေကိုသွားလေ့ရှိတယ်။ |
Value ကိုပြန်သွားပါ
အောင်မြင်သောအခါအရာဝတ်ထုကိုပြန်ပို့သည်။
ပျက်ကွက်အပေါ် မှားယွင်းသော ပြန်လာ။
Class Name ကိုမဖော်ပြဘဲအရိုးရှင်းဆုံးအသုံးပြုမှု -
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject();
echo $user->name; // output username
?>
ဤအချိန်တွင် $ သုံးစွဲသူ သည် stdclass အရာဝတ်ထုတစ်ခုဖြစ်သည်။ attribute သည်ဒေတာဘေ့စ်နယ်ပယ်နှင့်ကိုက်ညီသည်။
သင့်မှာ အသုံးပြုသူ အတန်းတစ်ခုရှိတယ်ဆိုပါစို့။
<?php
class User {
public $id;
public $name;
public $email;
public function greet() {
return "Hello, {$this->name}!";
}
}
?>
Database Row ကို အသုံးပြုသူ အတန်းအစားအရာဝတ်ထုတစ်ခုထဲသို့ဖွင့်ရန် FetchocboPJOCTOBJOCTOCTOCT ကို သုံးပါ။
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject(User::class);
echo $user->greet(); // ထုတ်လုပ်ခြင်း "Hello, xxx!"
?>
၎င်းသည်အချက်အလက်များကိုရရှိမည်မဟုတ်ဘဲအရာဝတ်ထုကို ဦး စားပေးဒီဇိုင်းနှင့်အညီပိုမိုများပြားသောအရာဝတ်ထုနည်းလမ်းများကိုတိုက်ရိုက်ခေါ်ဆိုနိုင်သည်။
အကယ်. သင်၏အတန်းတွင်ဆောက်လုပ်ရေးလုပ်ငန်းတစ်ခုရှိပြီး parameters တွေကို pass လုပ်ရန်လိုအပ်ပါက၎င်းကိုသင်ဤကဲ့သို့သောကိုသုံးနိုင်သည်။
<?php
class UserWithConstructor {
public $id;
public $name;
public $email;
public function __construct($prefix) {
$this->name = $prefix . $this->name;
}
}
?>
ခေါ်ဆိုသည့်အခါဆောက်လုပ်ရေး parameters တွေကိုဖြတ်သန်းပါ။
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$user = $stmt->fetchObject(UserWithConstructor::class, ['Mr. ']);
echo $user->name; // ထုတ်လုပ်ခြင်း "Mr. xxx"
?>
? မှတ်သားရန်အရာ
ဒေတာဘေ့စ်မှရယူထားသောလယ်ကွင်းများကိုအရာဝတ်ထုတွင် သတ်မှတ်ပြီး ၎င်းဆောက်လုပ်ရေးကိုခေါ်လိမ့်မည်။ ဆိုလိုသည်မှာဆောက်လုပ်ရေးလုပ်ငန်းတွင် 0 င်ရောက်နိုင်သည့်ဂုဏ်သတ္တိများမှာဒေတာဘေ့စ်ကသတ်မှတ်ထားသည့်စံနှုန်းများဖြစ်သည်။
အကယ်. လယ်ကွင်းနှင့်အတန်းအစားနှင့်ကိုက်ညီမှုမရှိပါကအပိုဆောင်းပြုပြင်ခြင်းလိုအပ်ပါကသို့မဟုတ်စိတ်ကြိုက်နည်းလမ်းကိုကိုယ်တိုင်ပြုလုပ်ရန်အသုံးပြုသည်။
အသုံးပြုသူအရာဝတ်ထုကိုသတ်မှတ်ထားသော ID ဖြင့်ပြန်ပေးရန် API တစ်ခုပြုလုပ်လိုသည်ဟုဆိုပါစို့။ နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
// parameters တွေကိုရယူပါ
$id = $_GET['id'] ?? 1;
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$stmt = $pdo->prepare('SELECT id, name, email FROM users WHERE id = :id');
$stmt->execute(['id' => $id]);
$user = $stmt->fetchObject(User::class);
if ($user) {
header('Content-Type: application/json');
echo json_encode($user);
} else {
header("Location: https://gitbox.net/error/user-not-found");
}
?>
အသုံးပြုသူကိုတွေ့ပြီဆိုပါက API သည် JSON အရာဝတ်ထုကိုပြန်ပို့သည်။ အကယ်. ၎င်းကိုမတွေ့ပါက Gitbox.net ၏အမှားစာမျက်နှာသို့ခုန်ချသည်။
FetchobjectObject သည်အထူးသဖြင့် MVC ပုံစံနှင့်ပေါင်းစပ်သောအခါ အရာဝတ်ထုကို ဦး စားပေးသည့်ဖွံ့ဖြိုးတိုးတက်မှု အတွက်သင့်တော်သည်။
$ Class နှင့် $ ဆောက်လုပ်ရေးကို အသုံးပြု. ကျွမ်းကျင်မှုသည်သင့်အားလက်ရေး 0 န်ဆောင်မှုကုဒ်ကိုလျှော့ချရန်နှင့်ဖွံ့ဖြိုးတိုးတက်မှုထိရောက်မှုကိုတိုးတက်စေသည်။
သို့သော်မှတ်ချက်။ ။ Class Attribute များနှင့်ဒေတာဘေ့စ်လယ်ကွင်းများသည်ကိုက်ညီမှုမရှိပါကသတိထားပါ။