|
6 | 6 | use Psr\Http\Message\ServerRequestInterface;
|
7 | 7 | use Slim\Exception\HttpBadRequestException;
|
8 | 8 | use Slim\Routing\RouteContext;
|
| 9 | +use WonderNetwork\SlimKernel\Accessor\ArrayAccessor; |
9 | 10 |
|
10 | 11 | final class RouteArgument {
|
| 12 | + public static function of(ServerRequestInterface $request): ArrayAccessor { |
| 13 | + $route = RouteContext::fromRequest($request)->getRoute(); |
| 14 | + if (null === $route) { |
| 15 | + throw new HttpBadRequestException($request, "Route is not initialized on request"); |
| 16 | + } |
| 17 | + |
| 18 | + return ArrayAccessor::of( |
| 19 | + $route->getArguments(), |
| 20 | + fn (string $message) => new HttpBadRequestException($request, $message), |
| 21 | + ); |
| 22 | + } |
| 23 | + |
| 24 | + /** |
| 25 | + * @deprecated use self::of($request)->string($name) |
| 26 | + */ |
11 | 27 | public static function maybe(ServerRequestInterface $request, string $name): string {
|
12 |
| - return self::find($request, $name) ?? ''; |
| 28 | + return self::of($request)->string($name); |
13 | 29 | }
|
14 | 30 |
|
| 31 | + /** |
| 32 | + * @deprecated use self::of($request)->maybeString($name) |
| 33 | + */ |
15 | 34 | public static function find(ServerRequestInterface $request, string $name): ?string {
|
16 |
| - $route = RouteContext::fromRequest($request)->getRoute(); |
17 |
| - if (null === $route) { |
18 |
| - throw new HttpBadRequestException( |
19 |
| - $request, |
20 |
| - "Route is not initialized on request while accessing $name", |
21 |
| - ); |
22 |
| - } |
23 |
| - return $route->getArgument($name); |
| 35 | + return self::of($request)->maybeString($name); |
24 | 36 | }
|
25 | 37 |
|
| 38 | + /** |
| 39 | + * @deprecated use self::of($request)->requireString($name) |
| 40 | + */ |
26 | 41 | public static function get(ServerRequestInterface $request, string $name): string {
|
27 |
| - $value = self::find($request, $name); |
28 |
| - if (null === $value) { |
29 |
| - throw new HttpBadRequestException($request, "Route argument $name not found"); |
30 |
| - } |
31 |
| - return $value; |
| 42 | + return self::of($request)->requireString($name); |
32 | 43 | }
|
33 | 44 | }
|
0 commit comments