geekmusclay/router
最新稳定版本:0.6.1
Composer 安装命令:
composer require geekmusclay/router
包简介
A simple router, for learning and fun
README 文档
README
Setup
Simply clone this pckage and run composer install command.
/!\ WARNING This package require
geekmusclay/di-containercurrently under development To use this package you will have to donwload it, adn require it locally
Getting started
declare(strict_types=1); require '../vendor/autoload.php'; use Geekmusclay\DI\Core\Container; use GuzzleHttp\Psr7\ServerRequest; use Geekmusclay\Router\Core\Router; use Psr\Http\Message\ServerRequestInterface; $container = new Container(); $router = new Router($container); $router->get('/', function (ServerRequestInterface $request): void { var_dump($request->getQueryParams()); echo 'Hello World !'; }); $router->get('/hello', function (ServerRequestInterface $request): void { $name = $request->getQueryParams()['name'] ?? null; if (null === $name) { echo 'Hello World !'; } else { echo 'Hello ' . $name . ' !'; } }); try { $router->run(ServerRequest::fromGlobals()); } catch (Exception $e) { die($e->getMessage()); }
Routing
$router->get('/', function () { echo 'GET route'; }); $router->post('/', function () { echo 'POST route'; }); $router->put('/put', function () { echo 'PUT route'; }); $router->delete('/delete', function () { echo 'DELETE route'; });
Group routes
$router->group('/api/v1', function (RouterInterface $group) use ($router) { $group->get('/', function () { echo 'Welcome on api !'; }, 'api.v1.index'); $group->get('/coucou', function () { echo 'Coucou'; }, 'api.v1.coucou'); $group->get('/:id', function (int $id) { echo 'Coucou n°' . $id; }, 'api.v1.coucou.detail')->with([ 'id' => '[0-9]+', ]); $group->group('/sub', function (RouterInterface $subgroup) use ($router) { $subgroup->get('/', function () use ($router) { echo 'Sub index : ' . $router->path('api.v1.sub.index'); }, 'api.v1.sub.index'); $subgroup->get('/test', function () { echo 'Sub test'; }, 'api.v1.sub.test'); $subgroup->get('/:id', function (int $id) { echo 'Sub n°' . $id; }, 'api.v1.sub.detail')->with([ 'id' => '[0-9]+', ]); }); });
Using PHP 8 attributes
$router->register(MyController::class);
use Geekmusclay\Router\Attribute\Route; use Psr\Http\Message\ServerRequestInterface as Request; #[Route(path: '/prefixed')] class MyController { #[Route(path: '/', name: 'fake.index')] public function index() { return 'Index'; } #[Route(path: '/hello', name: 'fake.hello')] public function hello() { return 'Hello'; } #[Route(path: '/static', name: 'fake.static')] public static function staticHello() { return 'Hello'; } #[Route(path: '/:id-:slug', name: 'fake.complex', with: [ 'id' => '[0-9]+', 'slug' => '[a-z\-]+' ])] public function complex(Request $request, int $id, string $slug) { return 'Method: ' . $request->getMethod() . ', Id: ' . $id . ', Slug: ' . $slug; } }
License
This package is under MIT licence.
Have fun!
统计信息
- 总下载量: 34
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-04-26