Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
RequestPath
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace PeServer\Core\Http;
6
7use PeServer\Core\Text;
8use PeServer\Core\Web\IUrlHelper;
9
10/**
11 * 要求パス。
12 */
13readonly 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     */
28    public array $tree;
29
30    #endregion
31
32    public function __construct(string $requestUri, private IUrlHelper $urlHelper)
33    {
34        $request = $requestUri;
35        if (!Text::isNullOrWhiteSpace($this->urlHelper->getBasePath())) {
36            //TODO: リバースプロキシとかの場合, form のアクション、各リソースへのパスの書き換え未考慮 必要に迫られたら考える
37        }
38
39        $reqs = Text::split($request, '?', 2);
40
41        $this->full = Text::trim($reqs[0], '/');
42        $this->tree = Text::split($this->full, '/');
43    }
44}