介绍
这篇文章给大家介绍使用PHP怎么讲路由映射到指定控制器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
SimpleLoader。php
& lt; php ? class SimpleLoader { ,public static  function 运行($规则=array ()) { ,头(“内容类型:text/html; charset=utf-8"); ,自我:注册(); ,自我:命令行(); 美元,self::路由器(规则); ,自我:pathInfo (); ,} ,//自动加载 ,public static function  loadClass(类){ ,$类=str_replace(& # 39; \ \ & # 39;,, & # 39;/& # 39;,,美元类); ,$ dir=str_replace (& # 39; \ \ & # 39;,, & # 39;/& # 39;,, __DIR__); ,类=dir美元!”/啊C涝?”.php"; ,如果(! file_exists(类)美元){ 头才能(“HTTP/1.1, 404, Not Found"); ,} ,require_once $类; ,} ,//命令行模式 ,public static  function 命令行(){ ,如果(php_sapi_name ()==癱li") { $ _SERVER才能[& # 39;PATH_INFO& # 39;]=?”; _SERVER foreach 才能;([& # 39;argv # 39;], as $ k=祝辞美元v), { 如果才能($ k==0),继续; $ _SERVER才能[& # 39;PATH_INFO& # 39;]。=?皏美元; ,,} ,} ,} ,//路由模式 ,public static  function 路由器(规则){ ,如果(收取($ _SERVER [& # 39; PATH_INFO& # 39;]),,,, !空(规则)){ 美元才能pathInfo=ltrim ($ _SERVER [& # 39; PATH_INFO& # 39;],“/?; foreach 才能;(rules 美元;as $ k=祝辞美元v), { 美元才能reg=?案删蛔约旱?$ k/我; 如果才能(preg_match (reg, pathInfo美元)){ ,,$ res=preg_replace (reg, v,美元pathInfo美元); _SERVER,大敌;[& # 39;PATH_INFO& # 39;]=& # 39;/& # 39; res美元; ,,} ,,} ,} ,} ,//pathinfo处理 ,public static function  pathInfo () { ,如果(收取($ _SERVER [& # 39; PATH_INFO& # 39;])) { 美元才能pathinfo=array_filter(爆炸(“/?,$ _SERVER [& # 39; PATH_INFO& # 39;])); ,,(i=1; i<美元=count ($ pathinfo);美元我+ +){ 关键=美元才能收取($ pathinfo [$ i]), ?, pathinfo美元($ i),:, & # 39; & # 39;; 美元价值才能=https://www.yisu.com/zixun/isset ($ pathinfo [$ i + 1]) ?美元pathinfo [$ i + 1]:“”; 开关($ i) { 案例1: $ _GET [' m ']=ucfirst(键); 打破; 案例2: $ _GET [' c ']=ucfirst(键); 打破; 案例3: $ _GET [a]=美元关键; 打破; 默认值: 如果(> 3美元){ 如果($ % 2==0){ $ _GET [$ key]=$价值; } } 打破; } } } $ _GET [' m ']=!空($ _GET [' m ']) ?ucfirst ($ _GET [' m ']):“指数”; $ _GET [' c ']=!空($ _GET [' c ']) ?ucfirst ($ _GET [' c ']):“指数”; $ _GET [a]=!空($ _GET [a]) ?$ _GET [a]:“指数”; 控制器类美元=" \ \ \ \ {$ _GET [' m ']} \ \ {$ _GET [' c ']}”; 控制器=new美元类; 如果(method_exists(控制器,美元$ _GET [a])) { 控制器=new美元类; $控制器-> $ _GET [a] (); 其他}{ 头(“HTTP/1.1 404 Not Found”); 回声“404”; } }//致命错误回调 公共静态函数shutdownCallback () { $ e=error_get_last (); 如果(! $ e)返回; self:: myErrorHandler ($ e '类型',' <字体颜色=昂焐?致命错误的。$ e(“信息”),e(“文件”),美元$ e['行']); }//错误处理 受保护的静态函数myErrorHandler (errno, errstr美元,errfile美元,美元errline) { 列表(micseconds,秒)美元=爆炸(“”,()); 美元micseconds=圆(micseconds * 1000美元); $ micseconds=strlen (micseconds美元)==1 ?“0”。micseconds: micseconds美元; 如果(php_sapi_name ()==癱li”) { 打破美元=" \ r \ n "; 其他}{ 打破美元="
”; } mes="("美元。日期(“Y-m-d H:我:年代”,秒)美元。”:{$ micseconds}]”。errfile美元。””。errline美元。“行”。errstr。打破美元; echo $ mes; }//注册 公共静态函数注册(){ error_reporting (0); set_error_handler(功能(errno, errstr美元,errfile美元,美元errline) { 自我::myErrorHandler (errno, errstr美元,errfile美元,美元errline); }); register_shutdown_function(函数(){ 自我:shutdownCallback (); }); spl_autoload_register (“self:: loadClass”); } }
如何使用
index.php
& lt; php ?//路由映射 美元=规则阵列( 用户,& # 39;^ $ & # 39;=祝辞& # 39;用户/用户/getUserList& # 39; ,& # 39;用户\/(\ d +) $ ^ & # 39;=祝辞& # 39;用户/用户/getUserById/id/& # 39; 1美元, ,& # 39;用户(\ d +)/\ \ ^ & # 39;美元/条=祝辞& # 39;用户/用户/getUserArticle/uid/$ 1 & # 39; ); require_once “SimpleLoader.php"; SimpleLoader::运行(规则)美元;使用PHP怎么讲路由映射到指定控制器