teslex / solovey-router
1.1.0
2018-09-27 16:54 UTC
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is not auto-updated.
Last update: 2024-09-20 23:03:37 UTC
README
简单的PHP路由器
- 使用
composer require teslex/solovey-router
简单示例
<?php
require_once __DIR__ . "vendor/autoload.php";
use SoloveyRouter\Exception\RouterException;
use SoloveyRouter\Router;
$router = new Router();
$router->get('/', function () {
print "root";
});
$router->post('/api/user/{n}', function ($userId) {
print $userId;
});
try {
$router->go($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);
} catch (RouterException $e) {
throw $e;
}
自定义正则表达式模式
$router->pattern('email', '([-0-9a-zA-Z.+_]+@[-0-9a-zA-Z.+_]+.[a-zA-Z]{2,4})');
$router->get('/{email}/send/', function ($email) {
print $email;
});
自定义方法
$router->route(new Route($router, 'PUT|DELETE|POST', '/someurl', function () {
print "some response";
}));
组
$router->group('/api/user', [
'/getById/{n+}' => function (int $userId) {
print "user $userId";
// as GET
},
'POST' => [
'/updateEmail/{n+}/{email}' => function (int $userId, $email) {
print "$userId $email";
},
// ...
]
// any another method or methods
]);
$router->group('/api', function (Router $router) {
$router->get('/all', ..)->name('get all');
$router->post('/save', ..);
});
中间件
$router->get('/mid', function () {
print "after middleware";
})
->middleware(Middleware::class);
// ->middleware(Middleware::class, 'method');
// ->middleware(function () {});
// to routes group
$router->group('/api/mid', [
'/something' => function () {
print "after middleware";
}
])->middleware(Middleware::class); // allow to all routes
class Middleware {
function index() {
// do something
}
}
监听所有请求(在所有路由之后使用)
$router->any('/*', function () {
print "all of all";
});