diff --git a/src/Libs/Request.php b/src/Libs/Request.php index 204cd41..ccc2cda 100644 --- a/src/Libs/Request.php +++ b/src/Libs/Request.php @@ -15,6 +15,8 @@ namespace Libs; class Request extends Neuron { public Neuron $get; public Neuron $post; + public Neuron $put; + public Neuron $patch; public Neuron $json; public Neuron $params; public string $path; @@ -31,14 +33,21 @@ class Request extends Neuron { $this->path = Router::currentPath(); $this->get = new Neuron($_GET); $this->post = new Neuron($_POST); + $this->put = new Neuron(); + $this->patch = new Neuron(); $contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : ''; if ($contentType === "application/json") $this->json = new Neuron( (object) json_decode(trim(file_get_contents("php://input")), false) ); - else - $this->json = new Neuron(); + else { + $this->json = new Neuron(); + if (in_array($_SERVER['REQUEST_METHOD'], ['PUT', 'PATCH'])) { + parse_str(file_get_contents("php://input"), $input_vars); + $this->{strtolower($_SERVER['REQUEST_METHOD'])} = new Neuron($input_vars); + } + } $this->params = new Neuron(); } @@ -50,10 +59,10 @@ class Request extends Neuron { */ public function validate(): mixed { - if ($_SERVER['REQUEST_METHOD'] == 'GET') - $actual = $this->get; - else - $actual = $this->post; + $actual = match($_SERVER['REQUEST_METHOD']) { + 'GET', 'DELETE' => $this->get, + default => $this->{strtolower($_SERVER['REQUEST_METHOD'])} + }; if (Validator::validateList(static::paramRules(), $this->params) && Validator::validateList(static::getRules(), $this->get ) &&