zhuksone / php-router
Minimal router implementation for a php application
dev-master
2023-10-03 00:05 UTC
This package is auto-updated.
Last update: 2025-07-01 00:16:33 UTC
README
Minimal router implementation for a php application
Как использовать:
Шаг первый:
Заполнить массив Router::$GET как показано на примере ниже,
своими URI/Controller/action/name/middleware
Router::GET('/', \yourNamespace\SomeController::class, 'action')
->name('nameThisURI')
->middleware('short_name_your_middleware' или ['short_name_your_middleware', 'second_short_name_your_middleware']);
Router::GET('/post/{post}/comment/{comment}', \PostsController::class, 'showComment')
->name('myNameForThisURI')
->middleware(['Authorization', 'Authentication']);
Шаг второй:
Заполнить массив Router::$middleware, как показано на примере ниже,
для будущей замены у конкретного $routeConfig его коротких имён middleware на полные
use Middleware;
Router::middleware('short_name_your_middleware', yourNamespace\SomeMiddleware::class);
Router::middleware('second_short_name_your_middleware', yourNamespace\SomeSecondMiddleware::class);
Router::middleware('Authorization', Authorization::class);
Router::middleware('Authentication', Authentication::class);
Шаг третий:
$routeConfig = Router::compareURI($_SERVER['REQUEST_URI']);
Шаг №1 и шаг №2 можно поменять местами. Главное, чтобы в момент вызова метода Router::compareURI($_SERVER['REQUEST_URI']) короткие имена middleware и им принадлежащие классы уже были добавлены в массив
Дамп $routeConfig для uri '/post/123/comment/456':
RouteConfig:
'uri' => '/post/{post}/comment/{comment}',
'className' => 'PostsController',
'action' => 'showComment',
'uri_name' => 'commentPost',
'middleware' => [
0 => 'Middleware\Authorization',
1 => 'Middleware\Authentication',
],
'middlewareString' => false,
'Comparisons' => [
'post' => '123',
'comment' => '456',
],
В поле 'Comparisons' нам доступны значения по именам, которые мы указали при назначении роута определённому uri:
Router::GET('/myRoute/{intKey}/', \SomeController::class, 'action')