လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Laravel တွင် Attraget_get ကို attraphatfulate လုပ်နည်း

Laravel တွင် Attraget_get ကို attraphatfulate လုပ်နည်း

M66 2025-05-22

PHP ဖွံ့ဖြိုးတိုးတက်မှုအတွက် Laravel ကိုအသုံးပြုသောအခါမူဘောင်သည် database operations များကို database operations များအတွက် Eloquent Orm နှင့် PDO ကိုအသုံးပြုသည်။ သို့သော်အချို့သောအခြေအနေများတွင်သဟဇာတဖြစ်စေခြင်းသို့မဟုတ်စွမ်းဆောင်ရည်အကြောင်းပြချက်များကြောင့် developer များသည်ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်ရန် MySQLI extension မှပေးသောလုပ်ဆောင်ချက်များကိုတိုက်ရိုက်သုံးနိုင်သည်။ MySQLI_STMT :: AttR_Get သည် MySQLI_STMT အတန်း၏နည်းလမ်းဖြစ်သည်။ Datually Connection Section ကို debrugging သို့မဟုတ် granulary connection ကိုစီမံခန့်ခွဲသောအခါအလွန်အသုံးဝင်သည်။

MySQLI_STMT :: attr_et ကို laravel projects တွင်ပိုမိုကောင်းမွန်စွာအသုံးပြုနိုင်ရန်အတွက်ကျွန်ုပ်တို့သည်၎င်းကို onlavel projects များ၌၎င်းကို oncapsulate လုပ်နိုင်ပြီး database connections နှင့် database connections နှင့် strice studing studing studence processing processing processing processing process) အောက်ပါတို့သည်တိကျသောထုပ်ပိုးခြင်းအစီအစဉ်နှင့်အကောင်အထည်ဖော်မှုအဆင့်များဖြစ်သည်။

1 ။ ထုံးစံဒေတာဘေ့စ်ဝန်ဆောင်မှုအတန်းကိုဖန်တီးပါ

ပထမ ဦး စွာ MySQLIService ကဲ့သို့သောဇာတိ MySQLI စစ်ဆင်ရေးများကို encapsulating အတွက် Laravel Project တွင် 0 န်ဆောင်မှုအတန်းတစ်ခုဖန်တီးနိုင်သည်။

MySQLIService.php ဖိုင်ကို app / 0 န်ဆောင်မှု လမ်းညွှန်တွင်ဖန်တီးပါ။

 <?php

namespace App\Services;

class MysqliService
{
    protected $mysqli;

    public function __construct()
    {
        $this->connect();
    }

    protected function connect()
    {
        $this->mysqli = new \mysqli(
            env('DB_HOST', 'localhost'),
            env('DB_USERNAME', 'root'),
            env('DB_PASSWORD', ''),
            env('DB_DATABASE', 'forge'),
            env('DB_PORT', 3306)
        );

        if ($this->mysqli->connect_error) {
            throw new \Exception('Connect Error (' . $this->mysqli->connect_errno . ') ' . $this->mysqli->connect_error);
        }
    }

    public function prepare($query)
    {
        $stmt = $this->mysqli->prepare($query);
        if (!$stmt) {
            throw new \Exception('Prepare failed: ' . $this->mysqli->error);
        }
        return $stmt;
    }

    public function getStatementAttribute($stmt, int $attr)
    {
        if (!($stmt instanceof \mysqli_stmt)) {
            throw new \InvalidArgumentException('Invalid statement object provided.');
        }

        return $stmt->attr_get($attr);
    }

    public function close()
    {
        if ($this->mysqli) {
            $this->mysqli->close();
        }
    }
}

2 ။ 0 န်ဆောင်မှုကွန်တိန်နာ binding ကိုမှတ်ပုံတင်ပါ

MySQLIService ကို Controllers သို့မဟုတ်အခြားအတန်းများတွင်အသုံးပြုရန်အတွက် 0 န်ဆောင်မှုဌာနကို appserviceprovider တွင်ပြုလုပ်နိုင်သည်။

အက်ပလီကေးရှင်း / ပံ့ပိုးသူများ / appserviceprovider.php ကို တည်းဖြတ်ပါ။

 use App\Services\MysqliService;

public function register()
{
    $this->app->singleton(MysqliService::class, function ($app) {
        return new MysqliService();
    });
}

3 ။ Controller တွင်ထုပ်ပိုးအသုံးပြုရန်နည်းလမ်းများ

ယခုကျွန်ုပ်တို့သည် MySQLIServication ကို Controller တွင်တိုက်ရိုက်အသုံးပြုနိုင်ပြီးကြေငြာချက်များရရန် GetStTTATETATETTRATTRATTRATTTRATEDITED ကို ခေါ်ဆိုနိုင်သည်။

နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 use App\Services\MysqliService;

class DatabaseController extends Controller
{
    protected $mysqliService;

    public function __construct(MysqliService $mysqliService)
    {
        $this->mysqliService = $mysqliService;
    }

    public function showAttribute()
    {
        $stmt = $this->mysqliService->prepare("SELECT * FROM users WHERE email = ?");
        $stmt->bind_param("s", $email);
        $email = "test@m66.net";

        $stmt->execute();

        // ငါတို့ရချင်ပါတယ်ဆိုပါစို့ MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH ဉစ်စာပစ္စည်းများ
        $attrValue = $this->mysqliService->getStatementAttribute($stmt, MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);

        $stmt->close();
        $this->mysqliService->close();

        return response()->json(['attribute_value' => $attrValue]);
    }
}

4 ။ မှတ်စုများ

  • Att_get သည် MySQLI_STMT ၏အတော်အတန်အသုံးအများဆုံးနည်းလမ်းဖြစ်သည်။ PHP ပတ် 0 န်းကျင်အားလုံးသည်ပုံမှန်အားဖြင့်ဤ extension method ကို enable လုပ်ပါ။ ဖြန့်ကျက်ခြင်းမပြုမီ၎င်း၏ရရှိမှုကိုအတည်ပြုသင့်သည်။

  • Laravel တွင်ဇာတိ MySQLI လုပ်ငန်းများကိုသင်အသုံးပြုပါက၎င်းကို 0 န်ဆောင်မှုအလွှာတစ်ခုအဖြစ် encapsulate လုပ်ရန်နှင့်စနစ်အားကြံ့ခိုင်မှုကိုသေချာစေရန်သစ်ထုတ်လုပ်ခြင်းနှင့်ခြွင်းချက်ကိုင်တွယ်ရန်စဉ်းစားရန်အကြံပြုသည်။

  • MySQLI သည် အချို့သောအခြေအနေများတွင်အဆင့်နိမ့်ထိန်းချုပ်နိုင်သောစွမ်းရည်များရှိနေစဉ် Laravel ၏ eloquent နှင့် Query Builder သည်အများအားဖြင့်နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်ပိုမိုသင့်တော်သောအဆင့်မြင့် abstraction များကိုပေးသည်။

အထက်ဖော်ပြပါ encapsulationulation method မှတစ်ဆင့် MySQLI_STMT :: attract. attr_get ကို Laravel ရှိ Datavel ဆက်သွယ်မှုများနှင့်ကြေငြာချက်များ၏ဗဟိုစီမံခန့်ခွဲမှုများကိုပိုမိုရှင်းလင်းစွာခေါ်ဆိုနိုင်ပြီး Code ကိုပိုမိုရှင်းလင်းစွာထိန်းသိမ်းထားနိုင်သည်။