自定义路由的功能,指定到pathinfo的url上,再次升级之前的脚本 SimpleLoader.php <?php
class SimpleLoader{
public static function run($rules=array()){
header(\ self::register();
self::commandLine(); self::router($rules); self::pathInfo(); }
//自动加载
public static function loadClass($class){ $class=str_replace('\\\\', '/', $class); $dir=str_replace('\\\\', '/', __DIR__); $class=$dir.\ if(!file_exists($class)){
header(\ }
require_once $class; }
//命令行模式
public static function commandLine(){ if(php_sapi_name()==\ $_SERVER['PATH_INFO']=\
foreach ($_SERVER['argv'] as $k=>$v) { if($k==0) continue;
$_SERVER['PATH_INFO'].=\ } } }
//路由模式
public static function router($rules){
if(isset($_SERVER['PATH_INFO']) && !empty($rules)){ $pathInfo=ltrim($_SERVER['PATH_INFO'],\ foreach ($rules as $k=>$v) { $reg=\
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(\TH_INFO'])); for($i=1;$i<=count($pathinfo);$i++){ $key=isset($pathinfo[$i]) ? $pathinfo[$i] : '';
$value=isset($pathinfo[$i+1]) ? $pathinfo[$i+1] :\ switch ($i) { case 1:
$_GET['m']=ucfirst($key); break; case 2:
$_GET['c']=ucfirst($key); break; case 3:
$_GET['a']=$key; break; default: if($i>3){ 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=new $class;
if(method_exists($controller, $_GET['a'])){ $controller=new $class;
$controller->$_GET['a'](); }else{
header(\ echo \ } }
//致命错误回调
public static function shutdownCallback(){
$e=error_get_last(); if(!$e) return;
self::myErrorHandler($e['type'],'<font color=\Error</font> '.$e['message'],$e['file'],$e['line']); }
//错误处理
protected static function myErrorHandler($errno,$errstr,$errfile,$errline){ list($micseconds,$seconds)=explode(\ $micseconds=round($micseconds*1000);
$micseconds=strlen($micseconds)==1 ? '0'.$micseconds : $micseconds; if(php_sapi_name()==\ $break=\ }else{
$break=\ }
$mes=\\
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_fun\\User\\User.php <?php
namespace Controller\\User; class User{
public function getUserById(){
echo \用户信息id {$_GET['id']} 的信息\ }
public function getUserList(){ echo \用户列表\ }
public function getUserArticle(){
echo \用户id {$_GET['uid']} 的文章列表\ } }
以上就是本文的全部内容,希望对大家的学习有所帮助