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) အောက်ပါတို့သည်တိကျသောထုပ်ပိုးခြင်းအစီအစဉ်နှင့်အကောင်အထည်ဖော်မှုအဆင့်များဖြစ်သည်။
ပထမ ဦး စွာ 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();
}
}
}
MySQLIService ကို Controllers သို့မဟုတ်အခြားအတန်းများတွင်အသုံးပြုရန်အတွက် 0 န်ဆောင်မှုဌာနကို appserviceprovider တွင်ပြုလုပ်နိုင်သည်။
အက်ပလီကေးရှင်း / ပံ့ပိုးသူများ / appserviceprovider.php ကို တည်းဖြတ်ပါ။
use App\Services\MysqliService;
public function register()
{
$this->app->singleton(MysqliService::class, function ($app) {
return new MysqliService();
});
}
ယခုကျွန်ုပ်တို့သည် 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]);
}
}
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 ကိုပိုမိုရှင်းလင်းစွာထိန်းသိမ်းထားနိုင်သည်။