一个简单的php路由类

前端之家收集整理的这篇文章主要介绍了一个简单的php路由类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家分享PHP编写一个简单的路由类,供大家参考,具体内容如下

PHP;"> PHP namespace cmhc\Hcrail;

class Hcrail
{

/**

  • callback function
  • @var callable
    */
    protected static $callback;

/**

  • match string or match regexp
  • @var string
    */
    protected static $match;

protected static $routeFound = false;

/**

  • deal with get,post,head,put,delete,options,head
  • @param $method
  • @param $arguments
  • @return
    */
    public static function __callstatic($method,$arguments)
    {
    self::$match = str_replace("//","/",dirname($_SERVER['PHP_SELF']) . '/' . $arguments[0]);
    self::$callback = $arguments[1];
    self::dispatch();
    return;
    }

/**

  • processing ordinary route matches
  • @param string $requestUri
  • @return
    */
    public static function normalMatch($requestUri)
    {
    if (self::$match == $requestUri) {
    self::$routeFound = true;
    call_user_func(self::$callback);
    }
    return;
    }

/**

  • processing regular route matches
  • @param string $requestUri
  • @return
    */
    public static function regexpMatch($requestUri)
    {
    //处理正则表达式
    $regexp = self::$match;
    preg_match("#$regexp#",$requestUri,$matches);
    if (!empty($matches)) {
    self::$routeFound = true;
    call_user_func(self::$callback,$matches);
    }
    return;
    }

/**

  • dispatch route
  • @return
    */
    public static function dispatch()
    {
    if (self::$routeFound) {
    return ;
    }
    $requestUri = parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH);
    $requestMethod = $_SERVER['REQUEST_METHOD'];
if (strpos(self::$match,'(') === false) {
  self::normalMatch($requestUri);
} else {
  self::regexpMatch($requestUri);
}

}

/**

  • Determining whether the route is found
  • @return boolean
    */
    public static function isNotFound()
    {
    return !self::$routeFound;
    }

}

下载地址:nofollow" target="_blank" href="https://github.com/cmhc/Hcrail">https://github.com/cmhc/Hcrail

希望本文所述对大家学习PHP程序设计有所帮助。

猜你在找的PHP相关文章