လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ရိုးရှင်းသော routing ဖြန့်ဖြူးခွဲခြမ်းစိတ်ဖြာရန် Parse_URL ကိုသုံးပါ

ရိုးရှင်းသော routing ဖြန့်ဖြူးခွဲခြမ်းစိတ်ဖြာရန် Parse_URL ကိုသုံးပါ

gitbox 2025-05-26

0 က်ဘ်အပလီကေးရှင်းများဖွင့်လှစ်သည့်အခါ routing system ၏ function သည်အသုံးပြုသူမှယူထားသော URL ကိုသက်ဆိုင်ရာ controller နှင့်နည်းလမ်းသို့ခွဲခြမ်းစိတ်ဖြာရန်ဖြစ်သည်။ ခေတ်သစ်မူဘောင်များ (ဥပမာ - Laravel နှင့် Symfony) တွင်ပါ 0 င်သောအစွမ်းထက်သော routing systems တွင်တည်ဆောက်ထားသည့်အစွမ်းထက်သော routing systems တွင်ပါ 0 ်သည်။

ဤဆောင်းပါးသည် Parse_Url ကို မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ Parse_url ၏အခြေခံအသုံးပြုမှု

Parse_url သည် PHP တွင်ပါ 0 င်သော function တစ်ခုဖြစ်သည်။ ၎င်းသည်အစီအစဉ်, အိမ်ရှင်, လမ်းကြောင်း,

 $url = 'https://gitbox.net/user/profile?id=42';

$parts = parse_url($url);

print_r($parts);

ထုတ်လုပ်မှု -

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /user/profile
    [query] => id=42
)

output မှတွေ့နိုင်သည်မှာ Parse_URL သည် URL ၏လမ်းကြောင်းနှင့်စုံစမ်းမှုများကိုတိကျစွာရယူနိုင်ရန်ကျွန်ုပ်တို့အား URL ၏လမ်းကြောင်းနှင့်စုံစမ်းမှုကိုတိကျစွာရယူနိုင်ရန်ကူညီနိုင်သည်။

2 ။ အခြေခံလမ်းကြောင်းစနစ်ကိုတည်ဆောက်ပါ

အောက်ပါကဲ့သို့သော URL များကိုထောက်ပံ့သောရိုးရှင်းသော routing system တစ်ခုတည်ဆောက်ကြပါစို့။

 https://gitbox.net/controller/action/param1/param2

Controller နှင့် လုပ်ဆောင်ချက် များ၏အမည်များနှင့်အညီသက်ဆိုင်ရာနည်းလမ်းကိုကျွန်ုပ်တို့မျှော်လင့်ပါသည်။

1 ။ လက်ရှိတောင်းဆိုမှုကို၏ URL ကိုရယူပါ

ကျွန်ုပ်တို့၏ PHP application ကို unrl ပြန်လည်ရေးရန်ကိုထောက်ပံ့သောဆာဗာတွင်တပ်ဆင်ထားသည်ဟုယူဆသည် URL ပြန်လည်ရေးရန်ကိုထောက်ပံ့သောဆာဗာတစ်ခုတွင်လက်ရှိတောင်းဆိုမှုကို $ _server [_seri _uri '] ကိုရနိုင်သည်။

 $requestUri = $_SERVER['REQUEST_URI'];

2 ။ စုံစမ်းမှု string ကိုဖယ်ရှားပြီးလမ်းကြောင်းကိုဆန်းစစ်ပါ

 $path = parse_url($requestUri, PHP_URL_PATH);

// အစအ ဦး နှင့်အဆုံး slashes ဖယ်ရှားလိုက်ပါ,နှင့် slash အားဖြင့် split
$segments = explode('/', trim($path, '/'));

3 ။ သက်ဆိုင်ရာ controller နှင့်နည်းလမ်းမှဖြန့်ဝေ

 $controller = !empty($segments[0]) ? ucfirst($segments[0]) . 'Controller' : 'HomeController';
$action = isset($segments[1]) ? $segments[1] : 'index';
$params = array_slice($segments, 2);

4 ။ နမူနာ controller အတန်းအစား

 class UserController {
    public function profile($id = null) {
        echo "User profile page. ID: " . htmlspecialchars($id);
    }
}

5 ။ Controller နှင့်နည်းလမ်းကိုခေါ်ပါ

 if (class_exists($controller)) {
    $instance = new $controller();
    if (method_exists($instance, $action)) {
        call_user_func_array([$instance, $action], $params);
    } else {
        http_response_code(404);
        echo "အဆိုပါနည်းလမ်းမတည်ရှိပါဘူး:$action";
    }
} else {
    http_response_code(404);
    echo "အဆိုပါ Controller မတည်ရှိပါဘူး:$controller";
}

3 ။ ဥပမာများကိုစစ်ဆေးပါ

အောက်ပါလိပ်စာကိုကျွန်ုပ်တို့ရယူရန်ဆိုပါစို့။

 https://gitbox.net/user/profile/42

အဆိုပါ parsed variable ကိုဖြစ်လိမ့်မည်:

 $controller = 'UserController';
$action = 'profile';
$params = ['42'];

ထုတ်လုပ်မှု -

 User profile page. ID: 42

4 ။ နိဂုံးချုပ်

Parse_Url function ကို စူးစမ်းလေ့လာခြင်း နှင့် Call_User_Func_array တို့ နှင့်ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အလွန်ရိုးရှင်းသောကုဒ်များဖြင့်ပေါ့ပါးသော routing ဖြန့်ဖြူးရေးယန္တရားကိုလျင်မြန်စွာတည်ဆောက်နိုင်သည်။ ရှုပ်ထွေးသော application များ၏လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးနိုင်သော်လည်းရိုးရိုး API interfaces များသင်ယူခြင်းနှင့်တည်ဆောက်ခြင်းအတွက်လုံလောက်သောလက်တွေ့ကျသည်။ နောက်ဆက်တွဲဖွံ့ဖြိုးတိုးတက်မှု, ပုံမှန်ကိုက်ညီမှု, ပုံမှန် parameters များ, အမှားကိုင်တွယ်မှုနှင့် namespace အထောက်အပံ့များကိုစနစ်ပိုမိုစုံလင်စေရန်ထပ်မံထည့်သွင်းနိုင်သည်။