|
自定义路由的功能,指定到pathinfo的url上,再次升级之前的脚本
SimpleLoader.php
$v) {
if($k==0) continue;
$_SERVER['PATH_INFO'].="/".$v;
}
}
}
//路由模式
public static function router($rules){
if(isset($_SERVER['PATH_INFO']) && !empty($rules)){
$pathInfo=ltrim($_SERVER['PATH_INFO'],"/");
foreach ($rules as $k=>$v) {
$reg="/".$k."/i";
if(preg_match($reg,$pathInfo)){
$res=preg_replace($reg,$v,$pathInfo);
$_SERVER['PATH_INFO']='/'.$res;
}
}
}
}
//pathinfo处理
public static function pathInfo(){
if(isset($_SERVER['PATH_INFO'])){
$pathinfo=array_filter(explode("/", $_SERVER['PATH_INFO']));
for($i=1;$i3){
if($i%2==0){
$_GET[$key]=$value;
}
}
break;
}
}
}
$_GET['m']=!empty($_GET['m']) ? ucfirst($_GET['m']) : 'Index';
$_GET['c']=!empty($_GET['c']) ? ucfirst($_GET['c']) : 'Index';
$_GET['a']=!empty($_GET['a']) ? $_GET['a'] : 'index';
$class="\\Controller\\{$_GET['m']}\\{$_GET['c']}";
$controller=new $class;
if(method_exists($controller, $_GET['a'])){
$controller=new $class;
$controller->$_GET['a']();
}else{
header("HTTP/1.1 404 Not Found");
echo "404";
}
}
//致命错误回调
public static function shutdownCallback(){
$e=error_get_last();
if(!$e) return;
self::myErrorHandler($e['type'],'
Fatal Error
'.$e['message'],$e['file'],$e['line']);
}
//错误处理
protected static function myErrorHandler($errno,$errstr,$errfile,$errline){
list($micseconds,$seconds)=explode(" ",microtime());
$micseconds=round($micseconds*1000);
$micseconds=strlen($micseconds)==1 ? '0'.$micseconds : $micseconds;
if(php_sapi_name()=="cli"){
$break="\r\n";
}else{
$break="
";
}
$mes="[".date("Y-m-d H:i:s",$seconds).":{$micseconds}] ".$errfile." ".$errline." line ".$errstr.$break;
echo $mes;
}
//注册
public static function register(){
error_reporting(0);
set_error_handler(function($errno,$errstr,$errfile,$errline){
self::myErrorHandler($errno,$errstr,$errfile,$errline);
});
register_shutdown_function(function(){
self::shutdownCallback();
});
spl_autoload_register("self::loadClass");
}
}
如何使用
index.php
'User/User/getUserList',
'^user\/(\d+)$'=>'User/User/getUserById/id/$1',
'^user\/(\d+)\/article$'=>'User/User/getUserArticle/uid/$1'
);
require_once "SimpleLoader.php";
SimpleLoader::run($rules);
控制器啥样
\Controller\User\User.php
效果呢:



以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:PHP URL路由类实例thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)php处理restful请求的路由类分享php url路由入门实例thinkphp的URL路由规则与配置实例ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼Laravel 5框架学习之路由、控制器和视图简介ThinkPHP路由详解自制PHP框架之路由与控制器
|
|