မျက်မှောက်ခေတ် Web Development တွင် routing systems သည်အရေးပါသောအခန်းကဏ် play မှပါ 0 င်သည်။ URL လိပ်စာအရအသုံးပြုသူတောင်းဆိုချက်များကိုသက်ဆိုင်ရာ controller နှင့်နည်းလမ်းကိုဖြေရှင်းရန်တာ 0 န်ရှိသည်။ PHP တွင်မူဘောင်များသို့မဟုတ်စိတ်ကြိုက်စနစ်များသည်လမ်းကြောင်းပြင်ဆင်မှု၏လုပ်ဆောင်နိုင်မှုကိုပေးသည်။ ပိုမိုပြောင်းလွယ်ပြင်လွယ်နှင့်ထိန်းသိမ်းရန်တောင်းဆိုရန်တောင်းဆိုနိုင်ရန်အတွက်ကျွန်ုပ်တို့သည်ပုံမှန်အားဖြင့် routing configuration ကို init function အတွက် Init function တွင်နေရာချထားသည်။
ဤဆောင်းပါးသည်အတိမ်အနက်ကိုလေ့လာနိုင်သည်။ PHP ၏ Int-Inform လုပ်ဆောင်ချက်များကို PHP's Intime International ကို configure လုပ်ရန်နှင့်ပိုမိုထိရောက်သောကုဒ်ဖွဲ့စည်းပုံကိုအကောင်အထည်ဖော်ရန် Configure လုပ်နည်း။
ဆိုတဲ့အရာမှာ Init function ကိုဆိုတဲ့နာမည်ကပြသတဲ့အနေဖြင့်ပရိုဂရမ်စတင်ရန်အတွက် entry function တစ်ခုဖြစ်ပါတယ်။ PHP တွင်အများအားဖြင့်လျှောက်လွှာ၏ startup လုပ်ထုံးလုပ်နည်းတွင် inst function သည်လိုအပ်သော configuration နှင့် Intience နှင့် Intience နှင့် Intience လုပ်ငန်းများလုပ်ဆောင်လိမ့်မည်။ ၎င်း၏အဓိကလုပ်ဆောင်ချက်မှာပရိုဂရမ်၏လည်ပတ်မှုပတ် 0 န်းကျင်ကိုပြင်ဆင်ရန်နှင့်နောက်ဆက်တွဲစီးပွားရေးယုတ္တိဗေဒကိုထောက်ပံ့ရန်ဖြစ်သည်။ routing systems များတွင် init function ၏အခန်းကဏ် is သည်အထူးအရေးကြီးသည်။ ၎င်းသည်ပုံမှန်အားဖြင့် routing rules များကို configure လုပ်လေ့ရှိပြီး URLs များကိုခွဲခြမ်းစိတ်ဖြာရန်နှင့်သက်ဆိုင်သောထိန်းချုပ်သူများနှင့်နည်းလမ်းများကိုသတ်မှတ်ရန်အသုံးပြုသည်။
PHP routing system ၏အခြေခံလုပ်ငန်းတာဝန်မှာအသုံးပြုသူမှတောင်းဆိုထားသော URL ကိုသတ်သတ်မှတ်မှတ် controller နည်းလမ်းကိုမြေပုံဆွဲရန်ဖြစ်သည်။ ရိုးရှင်းသော routing system တွင်များသောအားဖြင့်အစိတ်အပိုင်းများစွာရှိသည်။
တောင်းဆိုထားသော URL : အသုံးပြုသူသည် browser တွင်အသုံးပြုသူဆက်သွယ်မှုလိပ်စာ။
routing rules : URL နှင့် Controller နည်းလမ်းအကြားစာပေးစာယူ။
Controller - တောင်းဆိုမှုကိုပြုပြင်ခြင်းနှင့်တုန့်ပြန်မှုများကိုပြန်ပို့ခြင်းအတွက်ယုတ္တိယူနစ်။
Method - Controller တွင်သတ်သောလုပ်ဆောင်မှုများ။
ပုံမှန်လမ်းကြောင်းမှန်စည်းမျဉ်းကဒီလိုမျိုးဖြစ်လိမ့်မယ်။
$route->add('/home', 'HomeController@index');
$route->add('/user/{id}', 'UserController@show');
အထက်ဖော်ပြပါဥပမာတွင်အသုံးပြုသူလက်လှမ်းမီသည့်အခါ / အိမ် / အိမ်တွင် အိမ် အညွှန်း ကိန်းကိုအစပျိုးလိမ့်မည်။ သုံးစွဲသူ / {ID} ကို ဝင်ရောက်ကြည့်ရှုသောအခါ Usercontroller ၏ ပြပွဲကို အစပျိုးခြင်းနှင့် ID parameter သည်နောက်ဆက်တွဲထုတ်ပြန်လိမ့်မည်။
ကျွန်ုပ်တို့တွင်ရိုးရှင်းသော PHP application တစ်ခုရှိသည်ဆိုပါစို့ ။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် routing rules အားလုံးကိုစီမံရန် routing class တစ်ခုလိုအပ်သည်။ ဤအတန်းတွင်လမ်းကြောင်းစည်းမျဉ်းများထည့်သွင်းခြင်း, ကိုက်ညီသောတောင်းဆိုမှုများကိုဖြည့်စွက်ခြင်းနှင့်သက်ဆိုင်ရာ controller နည်းလမ်းကိုကွပ်မျက်ခြင်း၏လုပ်ဆောင်ချက်များပါ 0 င်သင့်သည်။
class Router {
protected $routes = [];
public function add($route, $action) {
$this->routes[$route] = $action;
}
public function dispatch($url) {
foreach ($this->routes as $route => $action) {
if ($url == $route) {
list($controller, $method) = explode('@', $action);
return (new $controller)->$method();
}
}
return "404 Not Found";
}
}
ထို့နောက်ကျွန်ုပ်တို့သည်လမ်းကြောင်းဆိုင်ရာစည်းမျဉ်းစည်းကမ်းများကို init function တွင် configure လုပ်နိုင်သည်။ Init function သည် routing system ကိုစတင်ရန်နှင့်တောင်းဆိုမှုများအားလုံးကိုကိုင်တွယ်ရန်တာ 0 န်ရှိသည်။
function init() {
$router = new Router();
// လမ်းကြောင်းစည်းမျဉ်းစည်းကမ်းများ configure
$router->add('/home', 'HomeController@index');
$router->add('/user/{id}', 'UserController@show');
// လက်ရှိတောင်းဆိုထားတဲ့ကိုရယူပါ URL
$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
// trigger routing ကိုက်ညီ
echo $router->dispatch($url);
}
အထက်ဖော်ပြပါကုဒ်တွင် Intide function သည် router အရာဝတ်ထုတစ်ခုကို ဦး စွာဖန်တီးပြီး $ road () method () method မှတဆင့် routing rules များကိုထည့်သွင်းထားသည်။ ထို့နောက်လက်ရှိတောင်းဆိုမှု၏ URL ကို $ _server ['ayserii'] မှရရှိသည်။
routing system ကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်စေရန်အတွက်ကျွန်ုပ်တို့သည် dynamic routing rules များအတွက်အထောက်အပံ့ကိုထည့်သွင်းနိုင်သည်။ ဥပမာအားဖြင့်အသုံးပြုသူ / user / {ID} {ID} {ID}} use} သည် URL မှ ID parameter ကိုထုတ်ယူနိုင်ပြီး Controller Method သို့သွားရန်လမ်းကြောင်းစနစ်သည် id parameter ကိုထုတ်ယူနိုင်ပြီး၎င်းကို Controller နည်းလမ်းသို့ကူးပြောင်းနိုင်သည့်အတွက် routing system သည် id id parameter ကိုထုတ်ယူနိုင်ပြီး Controller Method သို့ဖြတ်သွားသင့်သည်။
class Router {
protected $routes = [];
public function add($route, $action) {
$this->routes[] = ['route' => $route, 'action' => $action];
}
public function dispatch($url) {
foreach ($this->routes as $route) {
$pattern = preg_replace('/\{(\w+)\}/', '(\w+)', $route['route']);
if (preg_match("#^$pattern$#", $url, $matches)) {
array_shift($matches); // ပထမ ဦး ဆုံးပွဲစဉ်ကိုဖျက်ပါ(URLသူ့ဟာသူ)
list($controller, $method) = explode('@', $route['action']);
return (new $controller)->$method(...$matches);
}
}
return "404 Not Found";
}
}
ဤပြုပြင်ထားသော router class တွင်ပုံမှန်အသုံးအနှုန်းများကို URL ရှိ parameters တွေကိုပုံမှန်ဖော်ပြရန်ပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြုသည်။ ဥပမာအားဖြင့် / user / {ID} ကို ^ / user / (\ w +) $ သို့ ပြောင်းလဲလိမ့်မည် ။
အထက်ပါကိုပေါင်းစပ်ခြင်း, အောက်ပါတို့သည် PHP routing system ၏ဥပမာတစ်ခုဖြစ်သည်။
class Router {
protected $routes = [];
public function add($route, $action) {
$this->routes[] = ['route' => $route, 'action' => $action];
}
public function dispatch($url) {
foreach ($this->routes as $route) {
$pattern = preg_replace('/\{(\w+)\}/', '(\w+)', $route['route']);
if (preg_match("#^$pattern$#", $url, $matches)) {
array_shift($matches); // ပထမ ဦး ဆုံးပွဲစဉ်ကိုဖျက်ပါ(URLသူ့ဟာသူ)
list($controller, $method) = explode('@', $route['action']);
return (new $controller)->$method(...$matches);
}
}
return "404 Not Found";
}
}
class HomeController {
public function index() {
return "Welcome to the Home Page!";
}
}
class UserController {
public function show($id) {
return "User Profile for ID: $id";
}
}
function init() {
$router = new Router();
$router->add('/home', 'HomeController@index');
$router->add('/user/{id}', 'UserController@show');
$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
echo $router->dispatch($url);
}
// စတင်ခြင်းနှင့် routing processing လုပ်ဆောင်ပါ
init();
routing configuration ကို init function တွင်နေရာချထားခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ပြောင်းလွယ်ပြင်လွယ်တောင်းဆိုမှုထုတ်ယူခြင်းကိုပိုမိုအဆင်ပြေစွာလုပ်ဆောင်နိုင်သည်။ ၎င်းသည်ကုဒ်၏ထိန်းသိမ်းမှုကိုပိုမိုကောင်းမွန်စေသည်သာမကလိုအပ်သော configururations အားလုံးကိုအစီအစဉ်၏အစတွင်ပြီးစီးခဲ့သည်။ PHP ရှိ routing system ကိုပိုမိုနားလည်သဘောပေါက်ရန်နှင့်အကောင်အထည်ဖော်ရန်ဤဆောင်းပါးသည်သင့်ကိုပိုမိုနားလည်သဘောပေါက်ရန်နှင့်အကောင်အထည်ဖော်ရန်ကူညီနိုင်သည်ဟုမျှော်လင့်ပါ။