PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် routing processing သည်ခေတ်သစ် web applications များကိုတည်ဆောက်ခြင်း၏အရေးကြီးသောအပိုင်းဖြစ်သည်။ Routing မှတစ်ဆင့်ကျွန်ုပ်တို့သည်တောင်းဆိုထားသော URL ကို အခြေခံ. parameters များကို အခြေခံ. အသုံးပြုသူတောင်းဆိုချက်များကိုမည်သို့တုံ့ပြန်ရမည်ကိုဆုံးဖြတ်နိုင်သည်။ ဤဆောင်းပါးသည် Php ၏ PREG_replace_Callback_array function ကိုမည်သို့အသုံးပြုရမည်, ပုံမှန်အသုံးအနှုန်းများကိုပေါင်းစပ်ခြင်း,
Preg_replace_callback_array သည် PHP 7.0+ သို့ထည့်သွင်းထားသော function အသစ်တစ်ခုဖြစ်သည်။ ၎င်းသည်ကျွန်ုပ်တို့အားပုံမှန်အသုံးအနှုန်းများကိုတစ်ပြိုင်နက်တည်းခေါ်ဆိုခြင်းလုပ်ငန်းများကိုတစ်ပြိုင်တည်းသတ်မှတ်ရန်ခွင့်ပြုရန်ခွင့်ပြုသည်။ ဤနည်းလမ်းသည် preg_replace_callback ကို အကြိမ်ပေါင်းများစွာခေါ်ဆိုခြင်းထက် ပို. ကြော့ရှင်း။ ထိရောက်မှုရှိသည်။
function ကိုလက်မှတ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
string preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null)
$ patternals_and_callbacks - တွဲဖက်ခင်းကျင်းမှုတစ်ခုဖြစ်ပြီး Key သည်ပုံမှန်စကားရပ်ဖြစ်ပြီးတန်ဖိုးသည်သက်ဆိုင်ရာ callback function ဖြစ်သည်။
$ အကြောင်းအရာ - လုပ်ငန်းများ၌တင်ရန် string ကို။
$ ကန့်သတ်ချက် - အများဆုံးအစားထိုးနံပါတ်များ, ကန့်သတ်ချက်မရှိပါ။
$ ရေတွက် : အစားထိုးအကြိမ်အရေအတွက်။
ကျွန်ုပ်တို့တွင်အောက်ပါ URL လမ်းကြောင်းပုံစံများရှိသည်ဆိုပါစို့။
/ အသုံးပြုသူ / 123 ဆိုသည်မှာ User ID 123 နှင့်သုံးစွဲသူစာမျက်နှာကို သုံး. အသုံးပြုသည်။
/ 456 / Edit သည် Edit ID နှင့်အတူဆောင်းပါးတစ်ပုဒ်ကိုဆိုလိုသည် 456 ၏ဆောင်းပါးတစ်ပုဒ်ကိုဆိုသည်။
အမျိုးအစား / နည်းပညာ / စာမျက်နှာ / 2 သည် အမျိုးအစားခွဲခြားခြင်းစာမျက်နှာနှင့် pagination ကိုကိုယ်စားပြုသည်။
ကျွန်ုပ်တို့သည်ဤ URL များကိုပုံမှန်အသုံးအနှုန်းများဖြင့်ကိုက်ညီစေလိုပြီးနောက်ဆက်တွဲအပြောင်းအလဲအတွက်သက်ဆိုင်ရာ parameters များကိုထုတ်ယူလိုပါသည်။ ဤအတောအတွင်း, link ကိုပုံစံအသစ်သို့ပြန်လည်ရေးရန်မည်သို့သရုပ်ပြပါ။
<?php
// simulated တောင်းဆိုမှုများ URL ခေြလမ်း
$urlPath = '/post/456/edit';
// သွား preg_replace_callback_array ကွဲပြားခြားနားသောလမ်းကြောင်းများ၏အသုတ်,နှင့် parameters တွေကိုထုတ်ယူ
$result = preg_replace_callback_array([
// အသုံးပြုသူစာမျက်နှာနှင့်ကိုက်ညီ:/user/{id}
'#^/user/(\d+)$#' => function ($matches) {
$userId = $matches[1];
// ပြန်လည်ရေးရေးစည်းမျဉ်းသည်ဟုယူဆသည်:/profile.php?user={id}
return "/profile.php?user=$userId";
},
// Match ဆောင်းပါးတည်းဖြတ်ခြင်းစာမျက်နှာ:/post/{id}/edit
'#^/post/(\d+)/edit$#' => function ($matches) {
$postId = $matches[1];
// အဖြစ်ပြန်လည်ရေး:/edit_post.php?post={id}
return "/edit_post.php?post=$postId";
},
// အမျိုးအစားခွဲခြားထားသောစာမျက်နှာများ:/category/{name}/page/{num}
'#^/category/([\w-]+)/page/(\d+)$#' => function ($matches) {
$category = $matches[1];
$page = $matches[2];
// အဖြစ်ပြန်လည်ရေး:/category.php?cat={name}&page={num}
return "/category.php?cat=$category&page=$page";
},
], $urlPath);
// ဒိုမိန်းအမည်အားလုံးကိုအစားထိုးပါ m66.net,ပြီးပြည့်စုံသောထုတ်လုပ်ရန်လိုအပ်ကြောင်းယူဆ URL
$finalUrl = preg_replace('#https?://[^/]+#', 'https://m66.net', $result);
// output ကိုပြန်လည်ရေးသားခြင်းဖြစ်ပါတယ် URL
echo $finalUrl;
သုံး URL လမ်းကြောင်းပုံစံသုံးခုနှင့်ကိုက်ညီရန်ပုံမှန်အသုံးအနှုန်းသုံးခုကိုကုဒ်တွင်အသုံးပြုသည်။
preg_replace_callback_array သည် ကိုက်ညီသောအခြေအနေနှင့်အညီသက်ဆိုင်ရာ callback function ကိုခေါ်ဆိုခြင်းနှင့်ပြန်လည်ရေးထားသော URL လမ်းကြောင်းကိုပြန်ပို့သည်။
ဥပမာမှာတော့ကျွန်တော်တို့ဟာ query string တစ်ခုထဲကိုပြန်ရေးထားတဲ့လမ်းကြောင်းကိုဖြတ်သန်းသွားတယ်။
နောက်ဆုံးအနေဖြင့်လိုက်လျောညီထွေရှိသောဒိုမိန်းအမည်အားလုံးကို M66.net မှတဆင့် M66.net မှတဆင့် preg_replace ဖြင့်အစားထိုးပါ။
ကိုက်ညီသော parameter များကို controller သို့မဟုတ်လုပ်ငန်းလည်ပတ်မှုအတွက်လုပ်ငန်းလည်ပတ်မှုအတွက်လုပ်ငန်းလည်ပတ်မှုအတွက်လုပ်ငန်းလည်ပတ်မှုအတွက်လုပ်ဆောင်နိုင်သည့်လုပ်ငန်းလည်ပတ်မှုအတွက်လုပ်ဆောင်နိုင်သည်။
လိုအပ်ချက်များနှင့်အညီ routing mode များနှင့်သက်ဆိုင်ရာ callbacks များကိုတိုးချဲ့ပါ။
အစစ်အမှန်စီမံကိန်းများတွင်ဒိုမိန်းအမည်အစားထိုးအပိုင်းကိုတိကျခိုင်မာသည့် URL parsing စာကြည့်တိုက် (ဥပမာ - Parse_url ) နှင့်အတူကိုင်တွယ်နိုင်သည်။
Preg_replace_CAllback_array မှတဆင့် PHP routing process သည်ပိုမိုတိကျမှုနှင့်အကျိုးရှိလာသည်။ ၎င်းသည် URL parameters တွေကိုထုတ်ယူရန်အတွက်အဆင်ပြေသည်။ Domain Name အစားထိုးစစ်ဆင်ရေးနှင့်ပေါင်းစပ်ပြီး, သင်တောင်းဆိုချက်အချက်များမှဆာဗာလိပ်စာကိုလည်းထိန်းချုပ်နိုင်သည်။
PHP routing တွင်ဤနည်းပညာ၏လက်တွေ့ကျသောအသုံးချမှုကိုနားလည်သဘောပေါက်ရန်မျှော်လင့်ပါသည်။