0 က်ဘ်အပလီကေးရှင်းများဖွင့်လှစ်သည့်အခါ routing system ၏ function သည်အသုံးပြုသူမှယူထားသော URL ကိုသက်ဆိုင်ရာ controller နှင့်နည်းလမ်းသို့ခွဲခြမ်းစိတ်ဖြာရန်ဖြစ်သည်။ ခေတ်သစ်မူဘောင်များ (ဥပမာ - Laravel နှင့် Symfony) တွင်ပါ 0 င်သောအစွမ်းထက်သော routing systems တွင်တည်ဆောက်ထားသည့်အစွမ်းထက်သော routing systems တွင်ပါ 0 င ်သည်။
ဤဆောင်းပါးသည် 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 ၏လမ်းကြောင်းနှင့်စုံစမ်းမှုကိုတိကျစွာရယူနိုင်ရန်ကူညီနိုင်သည်။
အောက်ပါကဲ့သို့သော URL များကိုထောက်ပံ့သောရိုးရှင်းသော routing system တစ်ခုတည်ဆောက်ကြပါစို့။
https://gitbox.net/controller/action/param1/param2
Controller နှင့် လုပ်ဆောင်ချက် များ၏အမည်များနှင့်အညီသက်ဆိုင်ရာနည်းလမ်းကိုကျွန်ုပ်တို့မျှော်လင့်ပါသည်။
ကျွန်ုပ်တို့၏ PHP application ကို unrl ပြန်လည်ရေးရန်ကိုထောက်ပံ့သောဆာဗာတွင်တပ်ဆင်ထားသည်ဟုယူဆသည် URL ပြန်လည်ရေးရန်ကိုထောက်ပံ့သောဆာဗာတစ်ခုတွင်လက်ရှိတောင်းဆိုမှုကို $ _server [_seri _uri '] ကိုရနိုင်သည်။
$requestUri = $_SERVER['REQUEST_URI'];
$path = parse_url($requestUri, PHP_URL_PATH);
// အစအ ဦး နှင့်အဆုံး slashes ဖယ်ရှားလိုက်ပါ,နှင့် slash အားဖြင့် split
$segments = explode('/', trim($path, '/'));
$controller = !empty($segments[0]) ? ucfirst($segments[0]) . 'Controller' : 'HomeController';
$action = isset($segments[1]) ? $segments[1] : 'index';
$params = array_slice($segments, 2);
class UserController {
public function profile($id = null) {
echo "User profile page. ID: " . htmlspecialchars($id);
}
}
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";
}
အောက်ပါလိပ်စာကိုကျွန်ုပ်တို့ရယူရန်ဆိုပါစို့။
https://gitbox.net/user/profile/42
အဆိုပါ parsed variable ကိုဖြစ်လိမ့်မည်:
$controller = 'UserController';
$action = 'profile';
$params = ['42'];
ထုတ်လုပ်မှု -
User profile page. ID: 42
Parse_Url function ကို စူးစမ်းလေ့လာခြင်း နှင့် Call_User_Func_array တို့ နှင့်ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အလွန်ရိုးရှင်းသောကုဒ်များဖြင့်ပေါ့ပါးသော routing ဖြန့်ဖြူးရေးယန္တရားကိုလျင်မြန်စွာတည်ဆောက်နိုင်သည်။ ရှုပ်ထွေးသော application များ၏လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးနိုင်သော်လည်းရိုးရိုး API interfaces များသင်ယူခြင်းနှင့်တည်ဆောက်ခြင်းအတွက်လုံလောက်သောလက်တွေ့ကျသည်။ နောက်ဆက်တွဲဖွံ့ဖြိုးတိုးတက်မှု, ပုံမှန်ကိုက်ညီမှု, ပုံမှန် parameters များ, အမှားကိုင်တွယ်မှုနှင့် namespace အထောက်အပံ့များကိုစနစ်ပိုမိုစုံလင်စေရန်ထပ်မံထည့်သွင်းနိုင်သည်။