ap-lib/routing
Composer 安装命令:
composer require ap-lib/routing
包简介
High-performance, flexible PHP routing library designed for speed and extensibility. Routing is optimized for static method calls and relies on a pre-built index for maximum efficiency. It provides simple, direct hashmap-based routing while allowing custom strategies and middleware support.
README 文档
README
High-performance, flexible PHP routing library designed for speed and extensibility.
Routing is optimized for static method calls and relies on a pre-built index for maximum efficiency. It provides simple, direct hashmap-based routing while allowing custom strategies and middleware support.
Installation
composer require ap-lib/routing
Features
- 🚀 Performance-first - Designed for minimal overhead, using direct static method calls
- ⚡ Pre-built index - Requires indexing routes in advance for the fastest possible lookups
- 🔗 Static hashmap routing - Default routing mechanism based on an ultra-fast hashmap index
- 🛠 Extensible architecture - Supports custom routing strategies through a plugin-like system
- 🔄 Middleware support - Easily add middleware for request processing and authentication
Requirements
- PHP 8.3 or higher
Getting started
Base use case
#Handlers must be static methods class MainController { public static function handlerRoot(Request $request): Response { return new Response("main page"); } public function handlerHelloName(Request $request): Response { $name = isset($request->get['name']) && is_string($request->get['name']) ? $request->get['name'] : "guest"; return new Response("Hello " . htmlspecialchars($name)); } } // make routing $routing = new Hashmap(); // setup index $index = $routing->getIndexMaker(); $index->addEndpoint(Method::GET, "/", new Endpoint( [MainController::class, "handlerRoot"] )); $index->addEndpoint(Method::GET, "/hello", new Endpoint( [MainController::class, "handlerHelloName"] )); // init routing $routing->init($index->make()); // run `GET /` try { $routingResult = $routing->getRoute(Method::GET, "/"); } catch (NotFound) { throw new Exception("ERROR NOT FOUND"); } // execute handler + optional middlewares $response = $routingResult->endpoint->run( request: new Request( method: Method::GET, path: "/", get: [], post: [], cookie: [], headers: [], files: [], body: "", params: $routingResult->params, ip: "127.0.0.1" ) ); /* AP\Routing\Response\Response Object ( [body] => main page [code] => 200 ) */ // run `GET /hello?name=John` try { $routingResult = $routing->getRoute(Method::GET, "/hello"); } catch (NotFound) { throw new Exception("ERROR NOT FOUND"); } $response = $routingResult->endpoint->run( request: new Request( method: Method::GET, path: "/hello", get: ["name" => "John"], post: [], cookie: [], headers: [], files: [], body: "", params: $routingResult->params, ip: "127.0.0.1" ) ); /* AP\Routing\Response\Response Object ( [body] => Hello John [code] => 200 ) */
统计信息
- 总下载量: 57
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-02-04