Request
- Get current Request
 - Get data from header of current Request
 - Get data from body of current Request
 - Accessing Path Params / Variables
 - Sanitizing
 
Get current Request
Example GET Request
http://mymvc.ueffing.local/foo/bar/?a=1;b=2;c=3
Command
$oDTRequestCurrent = \MVC\Request::getCurrentRequest()
As it gives you an object of type MVC\DataType\DTRequestCurrent, you can access all key/values by a getter.
For example
$sPath = \MVC\Request::getCurrentRequest()->get_path();
$sQuery = \MVC\Request::getCurrentRequest()->get_query();
Check request method against route method
Check if request method equals the expecting one you declared in your route.
Check
$bMethodMatch = (
    // any request method is allowed
    '*' === \MVC\Route::getCurrent()->get_method() ||
    // request method does match route method
    \MVC\Request::getServerRequestMethod() === \MVC\Route::getCurrent()->get_method()
) ? true : false;
Evaluate and React
if (false === $bMethodMatch)
{
    die('wrong request method `' 
        . \MVC\Request::getServerRequestMethod() 
        . '`. It has to be one of: `' 
        . implode('|', Route::getCurrent()->get_methodsAssigned()) . '`'
    );
}
Get data from header of current Request
Command
$aHeader = \MVC\Request::getHeaderArray();
Example Result
array(10) {
  ["Host"]=>string(23) "mymvcdoku.ueffing.local"
  ["Connection"]=>string(10) "keep-alive"
  ["Cache-Control"]=>string(9) "max-age=0"
  ["Upgrade-Insecure-Requests"]=>string(1) "1"
  ["User-Agent"]=>string(101) "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"
  ["Accept"]=>string(135) "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
  ["Referer"]=>string(44) "http://mymvcdoku.ueffing.local/1.x/request"
  ["Accept-Encoding"]=>string(13) "gzip, deflate"
  ["Accept-Language"]=>string(35) "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"
  ["Cookie"]=>string(58) "Emvicy_cookieConsent=true; Emvicy=0j6eatdmvbq8tqsnsoeph6kipd"
}
Command
$aHeader = \MVC\Request::getHeader('Connection');
Example Result
string(10) "keep-alive"
Get data from body of current Request
Example PUT Request
curl -X PUT http://mymvc.ueffing.local/api/1.0.0/user/1969/ -H "Content-Type: application/json" -d '{"key": "value"}'
Command
$sInput = \MVC\Request::getCurrentRequest()->get_input();
Example Result
{"key": "value"}
- As you can see here, 
inputcontains the values we PUT ({"key": "value"}) 
Accessing Path Params / Variables
Example route
\MVC\Route::get('/api/:id/:name/:address/*', '\Foo\Controller\Api::index');
- for more Information about setting up such routes, see Routing with Path Params / Variables
 
Example Request
/api/1/Foo/Bar/what/else/
Command
$aPathParam = \MVC\Request::getPathParam();
Example Result of $aPathParam
array(4) {
  ["id"]=>string(1) "1"
  ["name"]=>string(3) "Foo"
  ["address"]=>string(3) "Bar"
  ["_tail"]=>string(10) "what/else/"
}
Command
$sPathParam = \MVC\Request::getPathParam('name')
Example Result of $sPathParam
Foo
Get the overlapping string on wildcard route paths
say you have a wildcard route and you want to get the overlapping path string after *.
Example route
\MVC\Route::get('/foo/*', '\Foo\Controller\Index::foo');
- see Wildcard routing
 
Example Request
/foo/bar/baz/
Command
$sTail = \MVC\Request::getPathParam()['_tail'];
Result of $sTail
bar/baz/
If you want the Result as an array
$aTail = \MVC\Request::getPathArray(
    \MVC\Request::getPathParam()['_tail']
);
Result of $aTail
array(2) {
  [0]=>string(3) "bar"
  [1]=>string(1) "baz"
}
Sanitizing
You can define rules for sanitizing any $_GET, $_POST, $_COOKIE parameter for a request. 
sanitizing $_GET, $_POST, $_COOKIE  
\MVC\Request::sanitize('GET', array(
    // rules for parameter `a`
    'a' => array(
        /** @see https://www.regular-expressions.info/unicode.html */
        'regex' => "/[^\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\|']+/u",#
        'length' => 256,
    ),
));
sanitizing input (e.g. PUT)  
$oDTRequestCurrent = \MVC\Request::getCurrentRequest();
// sanitizing
$oDTRequestCurrent->set_input(
    preg_replace(
        // sanitizing by regex rule
        "/[^\\p{L}\\p{M}\\p{Z}\\p{S}\\p{N}\\p{P}\|']+/u",
        '',
        // sanitizing by string length
        substr($oDTRequestCurrent->get_input(), 0, 256)
    )
);
// sanitized
$sInput = $oDTRequestCurrent->get_input();
        Emvicy