လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> symfony တွင် Custom extensions များမှတဆင့် Att_get ကိုသုံးပါ

symfony တွင် Custom extensions များမှတဆင့် Att_get ကိုသုံးပါ

M66 2025-06-02

symfony ကို အသုံးပြု. မြင့်မားသောစွမ်းဆောင်ရည်ရှိသော web application များကိုတီထွင်သည့်အခါနောက်ခံဒေတာဘေ့စ် interaction များကို doctrine orm မှတဆင့်လုပ်ဆောင်သည်။ သို့သော်စွမ်းဆောင်ရည်ညှိခြင်းသို့မဟုတ်အမွေစီစနစ်များနှင့်လိုက်ဖက်ခြင်းကဲ့သို့သောအချို့သောသတ်သတ်မှတ်မှတ်အခြေအနေများတွင် MySQLI လုပ်ဆောင်ချက်များကိုတိုက်ရိုက်အသုံးပြုခြင်းသည်ပိုမိုသင့်လျော်သောရွေးချယ်မှုဖြစ်လာသည်။ ဤဆောင်းပါးသည် MySQLI_STMT :: AttF_Get function ကို Symfony ဖြင့်မည်သို့အသုံးပြုရမည်ကိုရှင်းပြပါမည်။

1 ။ MySQLI_STMT :: Att_GET function ကိုနားလည်ပါ

MySQLI_STMT :: Attr_et သည် MySQLI_STMT အတန်း၏နည်းလမ်းတစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်မှု၏ပုံမှန်အသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 $stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$value = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);

သို့သော် PHP ကိုတည်ဆောက်ခြင်းပတ် 0 န်းကျင်များ၌ဤနည်းလမ်းကိုပုံမှန်အားဖြင့်မဖော်ထုတ်နိုင်ခြင်းသို့မဟုတ်လျစ်လျူရှုနိုင်သည်။ ဤကိစ္စတွင်ကျွန်ုပ်တို့သည် extension ကိုစိတ်ကြိုက်ပြုပြင်ခြင်းအားဖြင့်ဤ function ကိုဖြည့်စွက်နိုင်သည်။

2 ။ ထုံးစံ php extension ကိုဖန်တီးပါ

Symfony တွင် attr_get နည်းလမ်းကိုချောမွေ့စွာခေါ်ဆိုနိုင်ရန်အတွက်ကျွန်ုပ်တို့သည်ရိုးရှင်းသော PHP တိုးချဲ့မှုကိုတည်ဆောက်ရန်လိုအပ်သည်။

2.1 တိုးချဲ့ကုဒ်ဖွဲ့စည်းပုံ

အောက်ပါ directory ဖွဲ့စည်းပုံကိုဖန်တီးပါ။

 php-ext-mysqli-attr/
├── config.m4
├── mysqli_attr.c
└── php_mysqli_attr.h

2.2 တိုးချဲ့ကုဒ်ရေးသားခြင်း

config.m4 :

 PHP_ARG_ENABLE(mysqli_attr, whether to enable mysqli_attr support,
[  --enable-mysqli_attr     Enable mysqli_attr support])

if test "$PHP_MYSQLI_ATTR" = "yes"; then
  PHP_NEW_EXTENSION(mysqli_attr, mysqli_attr.c, $ext_shared)
fi

php_mysqli_atr.h :

 #ifndef PHP_MYSQLI_ATTR_H
#define PHP_MYSQLI_ATTR_H

extern zend_module_entry mysqli_attr_module_entry;
#define phpext_mysqli_attr_ptr &mysqli_attr_module_entry

#endif

mysqli_attr.c :

 #include "php.h"
#include "ext/mysqli/php_mysqli_structs.h"

PHP_FUNCTION(mysqli_stmt_attr_get)
{
    zval *stmt;
    zend_long attr;
    MYSQLI_RESOURCE *my_res;

    if (zend_parse_parameters(ZEND_NUM_ARGS(), "Ol", &stmt, mysqli_stmt_class_entry, &attr) == FAILURE) {
        RETURN_FALSE;
    }

    MYSQLI_FETCH_RESOURCE_STMT(my_res, stmt, MYSQLI_STATUS_VALID);

    my_bool value;
    if (mysql_stmt_attr_get(my_res->stmt, (enum enum_stmt_attr_type)attr, &value)) {
        RETURN_FALSE;
    }

    RETURN_LONG(value);
}

const zend_function_entry mysqli_attr_functions[] = {
    PHP_FE(mysqli_stmt_attr_get, NULL)
    PHP_FE_END
};

zend_module_entry mysqli_attr_module_entry = {
    STANDARD_MODULE_HEADER,
    "mysqli_attr",
    mysqli_attr_functions,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    "0.1",
    STANDARD_MODULE_PROPERTIES
};

ZEND_GET_MODULE(mysqli_attr)

2.3 compile extension များ

Terminal တွင် execute:

 phpize
./configure --enable-mysqli_attr
make
sudo make install

ထို့နောက် php.ini တွင်ထည့်ပါ။

 extension=mysqli_attr.so

3 ။ SymFony တွင် 0 န်ဆောင်မှုခေါ်ဆိုမှုများကို encapsulate

ယခုကျွန်ုပ်တို့သည် MySQLI_STMT_ATTR_ATTRAGGET နည်းလမ်းကိုတည်ဆောက်ခဲ့ပြီဆိုလျှင်၎င်းကိုခေါ်ဆိုရန် Symfony တွင် 0 န်ဆောင်မှုတစ်ခုဖန်တီးနိုင်သည်။

3.1 ဝန်ဆောင်မှုအတန်းတစ်ခုဖန်တီးပါ

 // src/Service/MysqliAttrService.php
namespace App\Service;

class MysqliAttrService
{
    public function getStmtAttr(\mysqli_stmt $stmt, int $attr): int
    {
        return mysqli_stmt_attr_get($stmt, $attr);
    }
}

3.2 မှတ်ပုံတင်ဝန်ဆောင်မှု

0 န်ဆောင်မှုကို Config / Services.yaml တွင်မှတ်ပုံတင်ပါ။

 services:
    App\Service\MysqliAttrService: ~

3.3 0 န်ဆောင်မှုများအသုံးပြုခြင်း

Controller သို့မဟုတ် command တွင် inctroughing နှင့်အသုံးပြုပါ။

 public function index(MysqliAttrService $attrService)
{
    $mysqli = new \mysqli('localhost', 'user', 'pass', 'dbname');
    $stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
    $attrValue = $attrService->getStmtAttr($stmt, MYSQLI_STMT_ATTR_CURSOR_TYPE);

    return new Response("အဆိုပါ attribute ကိုတန်ဖိုးဖြစ်ပါတယ်: " . $attrValue);
}

4 ။ ဘေးကင်းလုံခြုံမှုနှင့်လိုက်ဖက်တဲ့ထည့်သွင်းစဉ်းစား

  • ဤ extension သည်သတ်သတ်မှတ်မှတ်ဆာဗာပတ် 0 န်းကျင်အတွက်သင့်လျော်သည်။ PHP ဗားရှင်းသဟဇာတဖြစ်အောင်သေချာအောင်လုပ်ပါ။

  • စိတ်မချရသောဒေတာအခြေအနေများတွင်ပိုင်ဆိုင်မှုတန်ဖိုးများကိုဖော်ထုတ်ခြင်းကိုရှောင်ကြဉ်ပါ။

  • ဤနည်းလမ်းသည်နောက်ခံ interface နှင့်သက်ဆိုင်သောကြောင့်၎င်းကိုစွမ်းဆောင်ရည်မြှင့်တင်ခြင်းနှင့်သာအသုံးပြုရန်အကြံပြုသည်။

5 ။ အကျဉ်းချုပ်

MySQLI_STMT :: AttFon_get Method သည်စိတ်ကြိုက် extensions များမှတဆင့် Sympfony Project ရှိ AttFony Project ရှိ attr_get project ကိုခေါ်ဆိုခြင်းက developer များကနောက်ခံဒေတာဘေ့စ်၏ပိုမိုပြောင်းလွယ်ပြင်လွယ်သောအပြုအမူများကိုထိန်းချုပ်ရန်ခွင့်ပြုရန်သာမကအထူးစွမ်းဆောင်ရည်လိုအပ်ချက်များအတွက်လည်းအထောက်အကူပြုသည်။ သင်၏ 0 က်ဘ်ဆိုဒ်ကို https://m66.net တွင်တပ်ဆင်ထားပါကဤနည်းလမ်းသည်ချောမွေ့စွာပေါင်းစည်းနိုင်ပြီး Extension Module ကိုဖြည့်စွက်ခြင်း

ဤယန္တရားနှင့်အတူသင်သည်သင်၏ application ၏ထိန်းချုပ်မှုနှင့်တည်ငြိမ်မှုကိုဒေတာဘေ့စ်အလွှာတွင်အလွယ်တကူတိုးတက်စေနိုင်သည်။