effectra / router
Effectra HTTP 路由包。
v2.1.7
2023-12-12 16:33 UTC
Requires
- bmt/plural-converter: ^1.0
- effectra/http-message: ^1.0
- effectra/http-server-handler: ^2.0
- psr/container: ^2.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.1 || ^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
README
Effectra PHP 路由器是一个轻量级且灵活的路由库,适用于 PHP 应用程序。它提供了一种方便的方式来定义路由,并将传入的请求分配到适当的控制器或回调。
安装
您可以通过 Composer 安装 Effectra PHP 路由器库。在您的项目目录中运行以下命令:
composer require effectra/router
用法
要开始使用 Effectra PHP 路由器,请按照以下步骤操作
- 如果您还没有这样做,请包含自动加载器
require_once 'vendor/autoload.php';
- 导入必要的类
use Effectra\Router\Route; use Effectra\Router\RouteGroup; use Effectra\Http\Foundation\RequestFoundation; use Effectra\Http\Message\Response; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface;
- 创建
Route
类的一个实例
//pass response class to the router $response = new Response(); $route = new Route($response);
- 使用可用方法定义路由
$route->get('/home', function () { return 'Welcome to the home page!'; }); $route->post('/contact', 'StaticController@login'); $router->get('/', [HomeController::class, 'index']); $router->get('/users/', [UserController::class, 'index']); $router->post('/signin', function (RequestInterface $request, ResponseInterface $response) { return $response->json([ 'message' => 'hello world' ]); }); $route->crud('/report', ReportController::class, 'read|readOne|create|delete|deleteAll|search'); $route->auth('/auth/', AuthController::class); $route->group('/file/upload/', UploadController::class, function(RouteGroup $router){ $router->post('audio','createAudio'); $router->post('video','createVideo'); });
- 分配传入的请求
$request = RequestFoundation::createFromGlobals(); $route->dispatch($request);
路由方法
Route
类提供了几种方法来定义路由
get($pattern, $callback)
:定义一个 GET 路由。post($pattern, $callback)
:定义一个 POST 路由。put($pattern, $callback)
:定义一个 PUT 路由。delete($pattern, $callback)
:定义一个 DELETE 路由。patch($pattern, $callback)
:定义一个 PATCH 路由。options($pattern, $callback)
:定义一个 OPTIONS 路由。any($pattern, $callback)
:定义一个匹配任何 HTTP 方法的路由。register($method, $pattern, $callback)
:定义一个具有特定 HTTP 方法的自定义路由。routes()
:返回定义的路由数组。
中间件
Route
类支持路由组的中间件。您可以使用 middleware
方法向一组路由添加中间件
$router->get('/users/{id}', [UserController::class, 'show'])->middleware(new AuthMiddleware());
错误处理
Route
类提供了处理 404 未找到和 500 内部服务器错误响应的方法
$route->setNotFound(function () { // Handle 404 Not Found response }); $route->setInternalServerError(function () { // Handle 500 Internal Server Error response });
贡献
欢迎为 Effectra PHP 路由器库做出贡献!如果您遇到任何问题或对改进有建议,请随时打开一个问题或提交一个 pull 请求。
许可
Effectra PHP 路由器库是开源软件,使用 MIT 许可证。