手机版

PHP实现路由映射到指定控制器

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

自定义路由的功能,指定到pathinfo的全球资源定位器(统一资源定位符)上,再次升级之前的脚本

SimpleLoader.php

?phpclass SimpleLoader { public static function run($ rules=array()){ header(' content-type : text/html;charset=utf-8 ');self :寄存器();self :命令行();self :路由器($ rules);self :路径信息();} //自动加载公共静态函数load class($ class){ $ class=str _ replace(' \ \ ','/',$ class);$dir=str_replace('\\ ','/',_ _ DIR _ _);$class=$dir .'/'.$ class . PHP ';if(!file _ exists($ class)){ header(' HTTP/1.1 404未找到');} require _ once $ class} //命令行模式公共静态函数命令行(){ if(PHP _ SAPI _ name()==' CLI '){ $ _ SERVER[' PATH _ INFO ']=' ';foreach($ _ SERVER[' argv ']为$ k=$ v){ if($ k==0)继续;$_SERVER['PATH_INFO'].='/'.五美元;} } } //路由模式公共静态函数路由器($ rules){ if(is set($ _ SERVER[' PATH _ INFO '])!empty($ rules)){ $ PathInfo=ltrim($ _ SERVER[' PATH _ INFO '],'/');foreach($规则为$k=$v) { $reg='/' .$ k . '/I ';if(preg_match($reg,$ PathInfo)){ $ RES=preg _ replace($ reg,$v,$ PathInfo);$_SERVER['PATH_INFO']='/' .$ res} } } } //pathinfo处理公共静态函数PathInfo(){ if(已设置($ _ SERVER[' PATH _ INFO '])){ $ PathInfo=array _ filter(explode('/',$ _ SERVER[' PATH _ INFO ']));for($ I=1;$ I=计数($路径信息);$i ){ $key=isset($pathinfo[$i])?$路径信息[$ I]: " ";$ value=isset($ path info[$ I ^ 1])?$路径信息[$ I 1]: " ";switch($ I){ case 1: $ _ GET[' m ']=ucfirst($ key);打破;case 2: $ _ GET[' c ']=UC first($ key);打破;case : $ _ GET[' a ']=$ key;打破;默认值: if($ i3){ if($ I % 2==0){ $ _ GET[$ key]=$ value;} } break} } $_GET['m']=!空($_GET['m'])?ucfirst($ _ GET[' m ']):“Index”;$_GET['c']=!空($_GET['c'])?UC first($ _ GET[' c ']):“Index”;$_GET['a']=!空($_GET['a'])?$ _ GET[' a ']:“索引”;$ class=' \ \ Controller \ \ { $ _ GET[' m ']} \ \ { $ _ GET[' c ']} ';$ controller=新的$类;if(method_exists($controller,$ _ GET[' a '])){ $ controller=new $ class;$ controller-$ _ GET[' a ']();}else{ header('HTTP/1.1 404未找到');回声' 404 ';} } //致命错误回调公共静电函数shutdocallback(){ $ e=error _ get _ last();if(!$e)返回;self : yerrorhandler($ e[' type '],' font color='red '致命错误/font ` .$e['message'],$e['file'],$ e[' line ']);} //错误处理受保护的静态函数myErrorHandler($errno,$errstr,$errfile,$errline){ list($micseconds,$seconds)=explode(',micro time());$ mics秒=回合($ mics秒* 1000);$ mics秒=strlen(中等收入国家)秒)=1?0'.$ mics秒: $秒;if(PHP _ SAPI _ name()==' CLI '){ $ break=' \ r \ n ';} else { $ break=' br/';} $ mes="[" .日期(' Y-m-d H:i:s ',$秒)。': { $mic秒}]' .$errfile .线$errstr .$ breakecho $ mes} //注册公共静态函数寄存器(){ error _ reporting(0);set_error_handler(函数($errno,$errstr,$errfile,$ errline){ self :3360 yerrorhandler($ errno,$errstr,$errfile,$ errline);});register _ shut down _ function(function(){ self :3360 shut down back();});spl _ autoload _ register(' self :加载类');}} 如何使用index.php

?php/路由映射$ rules=array('^user\/(\d '^user$'='user/user/getuserlist')$ '=' user/user/getuser byid/id/$ 1 ','^user\/(\d)\/article $ '=' user/user/getuser article/uid/$ 1 ');require _ once ' SimpleLoader。PHP ';simple loader : run($ rules);控制器啥样\控制器\用户\用户

?phpnamespace控制器\用户;用户类{公共函数getUserById(){ echo '用户信息id {$_GET['id']}的信息;}公共函数getUserList(){ echo '用户列表;}公共函数getUserArticle(){ echo '用户id {$_GET['uid']}的文章列表;}} 效果呢:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:PHP实现路由映射到指定控制器是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。