Skip to content

cnphplib/route

 
 

Repository files navigation

Route - 一个高性能的 PHP 路由实现

StyleCI Build Status Scrutinizer Code Quality

思路参考nikic/FastRoute,实现原理:Fast request routing using regular expressions

Example

<?php

use Zqhong\Route\Helpers\Arr;
use Zqhong\Route\RouteCollector;
use Zqhong\Route\RouteDispatcher;

require "vendor/autoload.php";

function getUser($uid)
{
    echo "Your uid: " . $uid;
}

/** @var RouteDispatcher $routeDispatcher */
$routeDispatcher = dispatcher(function (RouteCollector $r) {
    $r->addRoute('GET', '/user/{id:\d+}', 'getUser');
});

$httpMethod = $_SERVER['REQUEST_METHOD'];
$uri = Arr::getValue($_GET, 'r');
$routeInfo = $routeDispatcher->dispatch($httpMethod, $uri);

if (Arr::getValue($routeInfo, 'isFound')) {
    $handler = Arr::getValue($routeInfo, 'handler');
    $params = Arr::getValue($routeInfo, 'params');
    call_user_func_array($handler, $params);
} else {
    exit('404 NOT FOUND');
}

发送请求:

// 返回 404 NOT FOUND
$ curl http://example.com/?r=ops

// 返回:Your uid: 1
$ curl http://example.com/?=/user/1

About

A fast router for PHP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%