netherphp / avenue
请求路由器。
v4.0.3
2022-02-22 16:43 UTC
Requires
- php: ^8.0
- netherphp/object: ^4.0
- netherphp/option: ^1.0
Requires (Dev)
- netherphp/standards: >=0.1.9
README
一个基于 PHP 8+ 注解的请求路由器。它能够扫描路由/控制器目录,以确定哪些应该被执行以满足传入的请求。
路由可以通过 RouteHandler
属性定义,它们愿意响应的路径、域和 HTTP 动词。它们还可以从 URI 中提取信息并将它们传递给方法。它将确保数据类型与方法签名上声明的类型相匹配。
根据请求参数(动词、域和路径)检查路由是否能够处理请求。然后询问路由是否愿意处理请求。可以使用具有 ConfirmWillAnswerRequest
属性的方法定义一个仅用于检查路由处理器愿意度的方法。
路由器能够实时扫描目录以生成路由映射(适用于开发),同时还有一个供应商 bin 脚本 netherave
,它能够生成静态路由映射文件,路由器将加载此文件以加快速度。
快速入门
如何在全新的项目中设置和使用库的说明。
文档
所有现有文档目前都位于 GitHub wiki 上。
示例路由器(www\index.php)
require('vendor/autoload.php'); $Config = Nether\Avenue\Library::PrepareDefaultConfig(); $Router = new Nether\Avenue\Router($Config); $Router->Run();
示例路由(routes\Home.php)
namespace Routes; use Nether\Avenue; class Home extends Avenue\Route { #[Avenue\Meta\RouteHandler('/index')] public function Index(): void { echo 'Home Page.'; return; } #[Avenue\Meta\RouteHandler('/dashboard')] #[Avenue\Meta\ConfirmWillAnswerRequest] public function Dashboard(): void { echo 'User Dashboard.'; return; } public function DashboardWillAnswerRequest(): int { $User = YourAppSessionLib::GetCurrentUser(); if($User && $User->CanHasDashboard()) return Avenue\Response::CodeOK; return Avenue\Response::CodeForbidden; } #[Avenue\Meta\ErrorHandler(403)] public function HandleForbidden(): void { echo "Dude No."; return; } #[Avenue\Meta\ErrorHandler(404)] public function HandleNotFound(): void { echo "Bruh Wut?"; return; } }
示例静态映射生成(CLI)
$ netherave gen routes --show
Route Directory: routes
Route File: ./routes.phson
Summary:
* GET (2)
Routes\Home::Index
Routes\Home::Dashboard
* Error Handlers (2)
Routes\Home::HandleForbidden
Routes\Home::HandleNotFound
注意
这不是一个 PSR 兼容的任何内容。它按其方式行事。