လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> multi-tenant ဗိသုကာလက်အောက်တွင် get_client_version ၏အထီးကျန်ခြင်း

multi-tenant ဗိသုကာလက်အောက်တွင် get_client_version ၏အထီးကျန်ခြင်း

gitbox 2025-05-29

အိမ်ငှားအိမ်ခြံမြေစျူဏ်တွင်ဗိသုကာပညာတွင်မတူညီသောအိမ်ငှားများသည်စီးပွားရေးလုပ်ငန်းများအတွက်မတူညီသောစီးပွားရေးလုပ်ငန်းများရှိလေ့ရှိပြီးစနစ်၏ကွဲပြားခြားနားသောဗားရှင်းများကိုပင်အသုံးပြုနိုင်သည်။ ဒါကစိန်ခေါ်မှုတစ်ခုဖြစ်စေသည်။

ဤဆောင်းပါးသည် get_client_version function မှတဆင့်အိမ်ငှားရေးဗားရှင်း၏အထီးကျန်မှုကိုအကောင်အထည်ဖော်ရန်ဘုံနှင့်ထိရောက်သောနည်းလမ်းကိုမိတ်ဆက်ပေးလိမ့်မည်။ ကျွန်ုပ်တို့သည် PHP ကို ​​အသုံးပြု. PHP ကို ​​အသုံးပြု. တိကျသောအကောင်အထည်ဖော်မှုနည်းလမ်းကိုပြသရန်နှင့်အမှန်တကယ်အခြေအနေများအပေါ် အခြေခံ. ကုဒ်များဥပမာများကိုပေးမည်။

1 ။ Multi- အိမ်ငှားဗိသုကာလက်အောက်တွင်သီးခြားသီးခြားလိုအပ်ချက်များ

Saas Platents (ငှားရမ်းလုပ်ကိုင်သူများ) သည်စနစ်တစ်ခုမျှဝေသည့် SAAAS ပလက်ဖောင်းတစ်ခုကိုမြင်ယောင်ကြည့်ပါ။ ဤအချိန်တွင်စနစ်သည်လက်ရှိအိမ်ငှား၏သက်ဆိုင်ရာ tenant ဗားရှင်းကို Runtime တွင်ခွဲခြားသတ်မှတ်ပြီးကိုက်ညီသည့်ယုတ္တိကုဒ်ကိုတင်နိုင်သည်။

Get_Client_Version_Version function ကိုပြသနိုင်သည့်နေရာဖြစ်သည်။

2 ။ get_client_version function ကိုသတ်မှတ်ပါ

အိမ်ငှား ID သို့မဟုတ် domain name မှအသုံးပြုသောဗားရှင်းကိုဆုံးဖြတ်ရန် function တစ်ခုကိုကျွန်ုပ်တို့သတ်မှတ်သည်။

 function get_client_version($tenantId) {
    // ဒီမှာအိမ်ငှားကိုသုံးနိုင်တယ်IDဒေတာဘေ့စ်သို့မဟုတ် configuration ဖိုင်မှဗားရှင်းနံပါတ်ရယူပါ
    // ရိုးရှင်းသောစေရန်,ဒီမှာ simulation ဒေတာကိုရေးပါ
    $tenantVersions = [
        'tenant_a' => 'v1',
        'tenant_b' => 'v2',
        'tenant_c' => 'v1',
    ];

    return $tenantVersions[$tenantId] ?? 'default';
}

ဗားရှင်းအရကွဲပြားခြားနားသောယုတ္တိဗေဒကို execut လုပ်ပါ

Get_Client_Version_Version function ကိုခေါ်ဆိုခြင်းအားဖြင့်,

 $tenantId = $_GET['tenant_id'] ?? 'default';
$version = get_client_version($tenantId);

switch ($version) {
    case 'v1':
        require_once 'modules/v1/payment.php';
        $result = process_payment_v1();
        break;

    case 'v2':
        require_once 'modules/v2/payment.php';
        $result = process_payment_v2();
        break;

    default:
        http_response_code(400);
        echo json_encode(['error' => 'Unsupported tenant version.']);
        exit;
}

// ရလဒ်ပြန်လာရလဒ်
header('Content-Type: application/json');
echo json_encode($result);

IV ။ အိမ်ငှားများမှသီးခြား urls အသုံးပြုခြင်း

အိမ်ငှားဗိသုကာအမျိုးမျိုးတွင်စနစ်၏ URL တွင်အိမ်ငှားဝိသေသလက်ခဏာတစ်ခုပါ 0 င်သည်။

 $url = "https://gitbox.net/api/{$tenantId}/orders";

ကွဲပြားခြားနားသောအိမ်ငှားများအကြား apis ဟုခေါ်သည့်အခါသင်မူဗားရှင်းအပေါ် အခြေခံ. routing သို့မဟုတ် parameter လုပ်ခြင်းပုံစံပြုလုပ်နိုင်သည်။

 function get_api_url($tenantId) {
    $version = get_client_version($tenantId);

    if ($version === 'v1') {
        return "https://gitbox.net/api/v1/{$tenantId}/orders";
    } elseif ($version === 'v2') {
        return "https://gitbox.net/api/v2/{$tenantId}/orders";
    }

    return "https://gitbox.net/api/default/{$tenantId}/orders";
}

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

Get_Client_Version_Version function ကိုမှတစ်ဆင့်ကျွန်ုပ်တို့သည်အိမ်ငှားနှင့်၎င်း၏မူကွဲအကြားတက်ကြွသောမြေပုံကိုအကောင်အထည်ဖော်ရန်စနစ်သည်စီးပွားရေးယုတ္တိဗေဒဆိုင်ရာယုတ္တိဗေဒဆိုင်ရာယုတ္တိဗေဒကိုပြောင်းလွယ်ပြင်လွယ်နိုင်သည်။ ဤနည်းလမ်းသည်အောက်ပါအားသာချက်များရှိသည်။

  • အားကောင်းသောအချည်းနှီးသက်သက်မျှမှု - extensions ဗားရှင်းပိုမိုများပြားလာသည်။

  • ထိန်းသိမ်းရန်လွယ်ကူသည် - ယုတ္တိဗေဒကိုအလွှာကိုရှင်းရှင်းလင်းလင်းဖော်ပြပြီးရှင်းလင်းသောဗားရှင်းတစ်ခုတည်း၏ယုတ္တိဗေဒကိုပြုပြင်မွမ်းမံခြင်းမရှိပါ။

  • ကောင်းသော decoupling : module ဗားရှင်းတစ်ခုချင်းစီသည်တစ် ဦး နှင့်တစ် ဦး မသက်ဆိုင်ပါ။ ၎င်းသည်စမ်းသပ်ရန်နှင့်ဖြန့်ကျက်ရန်လွယ်ကူသည်။

Saas Projects များတွင်ဤနည်းဗျူဟာသည်အထူးအရေးကြီးသည်။ အကယ်. သင်သည်အိမ်ငှားစနစ်ပေါင်းစုံစနစ်တစ်ခုကိုတည်ဆောက်နေပါကဤချဉ်းကပ်မှုကိုသင်လည်းရည်ညွှန်းသည်။