Kaedah penghuraian laluan berasaskan ungkapan biasa dalam PHP
Dalam aplikasi berasaskan web, penghalaan (Penghalaan) ialah konsep yang sangat penting. Ia bertanggungjawab untuk memetakan permintaan pengguna kepada pengendali atau pengawal yang sepadan untuk mencapai pemaparan dan pemprosesan halaman.
Dalam PHP, kita boleh menggunakan ungkapan biasa untuk menghuraikan laluan. Ungkapan biasa ialah alat berkuasa yang boleh digunakan untuk memadankan dan mengekstrak corak rentetan tertentu.
Pertama, kita perlu menentukan jadual penghalaan (Routing Table), yang digunakan untuk menyimpan hubungan pemetaan antara laluan URL yang berbeza dan pengendali yang sepadan. Jadual laluan boleh menjadi tatasusunan, di mana kunci adalah ungkapan biasa laluan URL dan nilai adalah pengendali yang sepadan.
Sebagai contoh, kami mempunyai jadual penghalaan berikut:
$routeTable = [ '/users/(d+)' => 'UserController@show', '/users' => 'UserController@index', '/posts/(d+)' => 'PostController@show', '/posts' => 'PostController@index', '/about' => 'PageController@about', '/contact' => 'PageController@contact', ];
Dalam jadual penghalaan di atas, kami telah menentukan beberapa laluan URL biasa dan pengendali yang sepadan. Ungkapan biasa digunakan untuk memadankan parameter Contohnya, /users/(d+)
boleh memadankan /users/1
dan /users/2
. , dsb. laluan. /users/(d+)
可以匹配/users/1
和/users/2
等路径。
接下来,我们需要编写一个路由解析函数,它负责将用户的请求路径与路由表进行匹配,从而找到对应的处理程序。
function parseRoute($routeTable, $requestPath) { foreach ($routeTable as $pattern => $handler) { if (preg_match('~^' . $pattern . '$~', $requestPath, $matches)) { return [ 'handler' => $handler, 'params' => array_slice($matches, 1) ]; } } return null; }
上面的函数中,我们使用preg_match
$requestPath = $_SERVER['REQUEST_URI']; $route = parseRoute($routeTable, $requestPath); if ($route) { list($controller, $action) = explode('@', $route['handler']); require_once 'controllers/' . $controller . '.php'; $params = $route['params']; call_user_func_array([$controller, $action], $params); } else { echo '404 Not Found'; }
preg_match
untuk memadankan ungkapan biasa. Jika perlawanan berjaya, pengendali dan parameter yang diekstrak dikembalikan jika perlawanan gagal, batal dikembalikan. Akhir sekali, kita boleh memanggil fungsi penyelesaian laluan dalam fail kemasukan aplikasi dan melaksanakan pengendali yang sepadan. rrreee
Dalam kod di atas, kami mula-mula mendapatkan laluan permintaan pengguna. Kemudian, panggil fungsi resolusi laluan untuk mendapatkan pengendali dan parameter yang sepadan. Akhirnya, fail pengawal dimuatkan secara dinamik, kaedah yang sepadan dilaksanakan, dan parameter diluluskan. Perlu diingatkan bahawa contoh kod kami hanyalah kaedah penghuraian laluan asas Dalam aplikasi sebenar, fungsi lain mungkin perlu dilaksanakan, seperti perisian tengah, kumpulan penghalaan, ubah hala, dsb. #🎜🎜##🎜🎜#Ringkasnya, kaedah penghuraian laluan berdasarkan ungkapan biasa boleh membantu kami mencapai padanan dan pemprosesan laluan URL yang fleksibel. Dengan mentakrifkan jadual penghalaan dan fungsi penghuraian, kami boleh melaksanakan fungsi penghalaan dengan mudah dan mengedarkan permintaan pengguna kepada pengendali yang sepadan. #🎜🎜#Atas ialah kandungan terperinci Kaedah penghuraian laluan berdasarkan ungkapan biasa dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!