လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDostatement မှတစ်ဆင့်ပြင်ပစာကြည့်တိုက်များနှင့်အဆင့်မြင့်မေးမြန်းချက်များနှင့်မည်သို့လုပ်ဆောင်ရမည်နည်း :: Fetchobject

PDostatement မှတစ်ဆင့်ပြင်ပစာကြည့်တိုက်များနှင့်အဆင့်မြင့်မေးမြန်းချက်များနှင့်မည်သို့လုပ်ဆောင်ရမည်နည်း :: Fetchobject

gitbox 2025-05-12

နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် PDOBASS ကို အသုံးပြု. PDOSTASTESS ကို အသုံးပြုရန် PDO ကိုအသုံးပြုလေ့ရှိသည်။ သို့သော်ကျွန်ုပ်တို့သည်စုံစမ်းမှု၏ပြောင်းလွယ်ပြင်လွယ်မှုကိုပိုမိုတိုးတက်စေလိုပါကရှုပ်ထွေးသောအချက်အလက်များပြုပြင်ခြင်းသို့မဟုတ်ထုံးစံအတိုင်းဒေတာအဆောက်အအုံများသို့ 0 င်ရောက်ခြင်းကိုထောက်ပံ့ခြင်းသို့မဟုတ်မြေပုံရေးဆွဲခြင်းကိုထောက်ပံ့ခြင်းစသည်တို့ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်လိုပါကပြင်ပစာကြည့်တိုက်များပိုမိုအဆင့်မြင့်သောစုံစမ်းမှုနည်းလမ်းများရရှိရန်အတွက်ပြင်ပစာကြည့်တိုက်များပေါင်းစပ်နိုင်သည်။

PDostatement :: Fetchobary များ နှင့်အတူပိုမိုပြောင်းလွယ်ပြင်လွယ်နှင့်အစွမ်းထက်သောစုံစမ်းမှုစနစ်ဖန်တီးနည်းကိုဤဆောင်းပါးကမိတ်ဆက်ပေးလိမ့်မည်။

အခြေခံသုံးသပ်ချက် - FetCOBOCTOBJORD ဆိုတာဘာလဲ။

FetchObject Method သည်ဒေတာဘေ့စ်မှအချက်အလက်များကိုထုတ်ယူသောအခါဒေတာအတန်းတစ်ခုစီကိုအရာဝတ်ထုဥပမာတစ်ခုစီထဲသို့ထည့်သွင်းရန်ခွင့်ပြုသည်။ အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <?php
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'password');
$stmt = $pdo->query('SELECT * FROM users');

while ($user = $stmt->fetchObject()) {
    echo $user->name . "\n";
}
?>

၎င်းသည်ရိုးရှင်းလွယ်ကူပြီးအသုံးပြုရလွယ်ကူသော်လည်းအိမ်ခြံမြေဆိုင်ရာအမည်ပြောင်းခြင်း, အလိုအလျောက်အမျိုးအစားပြောင်းလဲခြင်းသို့မဟုတ်ဆက်ဆံရေး မြေပုံ ,

ပြင်ပစာကြည့်တိုက် Selection: စိတ်ကြိုက် entity Mapper ကိုသုံးပါ

ပြောင်းလွယ်ပြင်လွယ်အတွက် Atlas \ Mapper သို့မဟုတ်ပေါ့ပါးသော PHP-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data-data ဒါပေမယ့်ဒီနေရာမှာကျနော်တို့အဓိကအားဖြင့်ရိုးရှင်းတဲ့ဥပမာကိုသုံးပြီးအခြေခံ entity Mapper ကိုလျင်မြန်စွာရေးလိုက်ပါ။

ဥပမာ - ရိုးရှင်းသော mapper ကိုဖန်တီးပါ

အသုံးပြုသူများ ဇယားကိုကျွန်ုပ်တို့ရှာဖွေလိုသည်ဆိုပါစို့

ပထမ ဦး စွာရိုးရှင်းသော entity အတန်းအစားကိုသတ်မှတ်ပါ။

 <?php
// src/Entity/User.php
class User
{
    public int $id;
    public string $username;
    public string $email;
}
?>

ထို့နောက်အခြေခံ Mapper ကိုရေးပါ။

 <?php
// src/Mapper/UserMapper.php
class UserMapper
{
    public static function map(PDOStatement $stmt): array
    {
        $results = [];
        
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $user = new User();
            $user->id = (int)$row['id'];
            $user->username = $row['name']; // ဒေတာဘေ့စလယ်ကွင်းဖြစ်ပါတယ် name,မြေပုံ username
            $user->email = $row['email'];
            $results[] = $user;
        }

        return $results;
    }
}
?>

လျှောက်လွှာတွင်ခေါ်ဆိုပါ။

 <?php
require 'src/Entity/User.php';
require 'src/Mapper/UserMapper.php';

$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');

$users = UserMapper::map($stmt);

foreach ($users as $user) {
    echo $user->username . " <" . $user->email . ">\n";
}
?>

ဤနည်းအားဖြင့်ဒေတာဘေ့စ်လယ်ကွင်းများသည်အတန်းအစား attribute အမည်များနှင့်ကွဲပြားလျှင်ပင်သူတို့သည်၎င်းတို့နှင့်ကိုက်ညီနိုင်ပြီးအဆင့်မြင့်ယုတ္တိဗေဒကိုအလွယ်တကူထည့်သွင်းနိုင်သည် (ဥပမာပြောင်းလဲခြင်း,

သိကောင်းစရာများ - အလိုအလျောက် loader နှင့်အတူ

သင်၏စီမံကိန်းသည်အတော်အတန်ကြီးမားပါကဤအတန်းများကိုစီမံရန်တေးဂီတကိုအသုံးပြုခြင်းကဲ့သို့သော PSR-4 စံသတ်မှတ်ချက်ကိုအလိုအလျောက်ဖွင့်ရန်အကြံပြုသည်

composer.json အတွက်ထည့်ပါ:

 {
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

ထို့နောက် run:

 composer dump-autoload

ထို့နောက်သင်ဤကဲ့သို့သော PHP ဖိုင်တွင်၎င်းကိုသုံးနိုင်သည်။

 <?php
require 'vendor/autoload.php';

use App\Entity\User;
use App\Mapper\UserMapper;

// ...အထက်တွင်တူညီသောကုဒ်
?>

အဆင့်မြင့်အပလီကေးရှင်းများ - Remote interfaces (ဥပမာ Gitpox.net)

မေးမြန်းရမည့်အချက်အလက်များ၏အစိတ်အပိုင်းတစ်ခုသည်ဒေတာဘေ့စ်မှဆင်းသက်လာပြီးအစိတ်အပိုင်းများကိုအဝေးမှဖြည့်စွက်ရန်လိုအပ်သည်

 <?php
function fetchAdditionalData(int $userId): array
{
    $json = file_get_contents("https://gitbox.net/api/userinfo/$userId");
    return json_decode($json, true);
}

foreach ($users as $user) {
    $extraData = fetchAdditionalData($user->id);
    $user->profile_picture = $extraData['profile_picture'] ?? null;
}
?>

ဤနည်းအားဖြင့်ဒေတာဘေ့စ် + ပြင်ပ interface ၏ဒေတာပေါင်းစည်းမှုသည်အလွန်သဘာဝကျပြီးအစွမ်းထက်လာသည်။