使用PHP怎么讲路由映射到指定控制器

  介绍

这篇文章给大家介绍使用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怎么讲路由映射到指定控制器