Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
1 / 1 |
RequestPath | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
2 | |
100.00% |
1 / 1 |
__construct | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
2 |
1 | <?php |
2 | |
3 | declare(strict_types=1); |
4 | |
5 | namespace PeServer\Core\Http; |
6 | |
7 | use PeServer\Core\Text; |
8 | use PeServer\Core\Web\IUrlHelper; |
9 | |
10 | /** |
11 | * 要求パス。 |
12 | */ |
13 | readonly class RequestPath |
14 | { |
15 | #region variable |
16 | |
17 | /** |
18 | * フルパス。 |
19 | * |
20 | * @var string |
21 | */ |
22 | public string $full; |
23 | /** |
24 | * / で分割されたパス一覧。 |
25 | * |
26 | * @var string[] |
27 | * @phpstan-var list<string> |
28 | */ |
29 | public array $tree; |
30 | |
31 | #endregion |
32 | |
33 | public function __construct(string $requestUri, private IUrlHelper $urlHelper) |
34 | { |
35 | $request = $requestUri; |
36 | if (!Text::isNullOrWhiteSpace($this->urlHelper->getBasePath())) { |
37 | //TODO: リバースプロキシとかの場合, form のアクション、各リソースへのパスの書き換え未考慮 必要に迫られたら考える |
38 | } |
39 | |
40 | $requestItems = Text::split($request, '?', 2); |
41 | |
42 | $this->full = Text::trim($requestItems[0], '/'); |
43 | $this->tree = Text::split($this->full, '/'); |
44 | } |
45 | } |