diff --git a/HttpServer/Http/HttpHeaders.php b/HttpServer/Http/HttpHeaders.php index 396f1986..a7176122 100644 --- a/HttpServer/Http/HttpHeaders.php +++ b/HttpServer/Http/HttpHeaders.php @@ -33,7 +33,7 @@ class HttpHeaders */ public function toArray(): array { - return $this->__handler__(); + return $this->_headers; } /** @@ -42,7 +42,7 @@ class HttpHeaders */ public function getHeader($name): ?string { - return $this->__handler__($name); + return $this->_headers[$name]; } @@ -53,7 +53,7 @@ class HttpHeaders */ public function get($name, $default = null): mixed { - return $this->__handler__($name, $default); + return $this->_headers[$name] ?? $default; } @@ -62,7 +62,7 @@ class HttpHeaders */ public function getContentType(): string { - return $this->__handler__('content-type'); + return $this->_headers['content-type']; } @@ -71,11 +71,7 @@ class HttpHeaders */ public function getRequestUri(): ?string { - $uri = $this->__handler__('request_uri', '/'); - if (empty($uri)) { - return '/'; - } - return $uri; + return $this->_headers['request_uri']; } @@ -84,7 +80,7 @@ class HttpHeaders */ public function getRequestMethod(): ?string { - return $this->__handler__('request_method'); + return $this->_headers['request_method']; } @@ -93,7 +89,7 @@ class HttpHeaders */ public function getAgent(): mixed { - return $this->__handler__('user-agent'); + return $this->_headers['user-agent']; } @@ -103,7 +99,7 @@ class HttpHeaders */ public function exists($name): bool { - return $this->__handler__($name) === null; + return $this->_headers[$name] ?? null === null; } @@ -112,22 +108,7 @@ class HttpHeaders */ public function getHeaders(): array { - return $this->__handler__(); - } - - - /** - * @param null $name - * @param null $default - * @return mixed - */ - private function __handler__($name = null, $default = null): mixed - { - $headers = Context::getContext(Request::class); - if (!empty($name)) { - return $headers->_headers[$name] ?? $default; - } - return $headers->_headers; + return $this->_headers; } } diff --git a/HttpServer/Http/HttpParams.php b/HttpServer/Http/HttpParams.php index e11bf48c..4f319ab0 100644 --- a/HttpServer/Http/HttpParams.php +++ b/HttpServer/Http/HttpParams.php @@ -24,442 +24,383 @@ use Snowflake\Snowflake; class HttpParams { - /** @var array|null */ - private ?array $_gets = []; + /** @var array|null */ + private ?array $_gets = []; - /** @var mixed */ - private mixed $_posts = []; + /** @var mixed */ + private mixed $_posts = []; - /** @var array|null */ - private ?array $_files = []; + /** @var array|null */ + private ?array $_files = []; - private mixed $_rawContent = ''; + private mixed $_rawContent = ''; - /** - * @param array|null $gets - */ - public function setGets(?array $gets): void - { - $this->_gets = $gets; - } + /** + * @param array|null $gets + */ + public function setGets(?array $gets): void + { + $this->_gets = $gets; + } - /** - * @param mixed $posts - */ - public function setPosts(mixed $posts): void - { - $this->_posts = $posts; - } + /** + * @param mixed $posts + */ + public function setPosts(mixed $posts): void + { + $this->_posts = $posts; + } - /** - * @param array|null $files - */ - public function setFiles(?array $files): void - { - $this->_files = $files; - } + /** + * @param array|null $files + */ + public function setFiles(?array $files): void + { + $this->_files = $files; + } - /** - * @param mixed|string $rawContent - */ - public function setRawContent(mixed $rawContent, string $context_type): void - { - if (str_contains($context_type, 'json')) { - $this->_rawContent = json_decode($rawContent, true); - } else if (str_contains($context_type, 'xml')) { - $this->_rawContent = Xml::toArray($rawContent); - } else { - $this->_rawContent = $rawContent; - } - } + /** + * @param mixed|string $rawContent + */ + public function setRawContent(mixed $rawContent, string $context_type): void + { + if (str_contains($context_type, 'json')) { + $this->_rawContent = json_decode($rawContent, true); + } else if (str_contains($context_type, 'xml')) { + $this->_rawContent = Xml::toArray($rawContent); + } else { + $this->_rawContent = $rawContent; + } + } - /** - * @return mixed - * @throws Exception - */ - public function getRawContent(): mixed - { - if (Context::hasContext('rawContent')) { - return Context::getContext('rawContent'); - } - /** @var \Swoole\Http\Request $context */ - $content = Context::getContext(\Swoole\Http\Request::class); - $context_type = request()->headers->getContentType(); - if (str_contains($context_type, 'json')) { - return Context::setContext('rawContent', json_decode($content, true)); - } else if (str_contains($context_type, 'xml')) { - return Context::setContext('rawContent', Xml::toArray($content)); - } else { - return Context::setContext('rawContent', $content); - } - } + /** + * @return mixed + * @throws Exception + */ + public function getRawContent(): mixed + { + return $this->_rawContent; + } - /** - * @return int - */ - public function offset(): int - { - return ($this->page() - 1) * $this->size(); - } + /** + * @return int + */ + public function offset(): int + { + return ($this->page() - 1) * $this->size(); + } - /** - * @return array|null - */ - public function getBody(): ?array - { - return $this->__posts__(); - } + /** + * @return array|null + */ + public function getBody(): ?array + { + return $this->_posts; + } - /** - * @return int - */ - private function page(): int - { - return (int)$this->get('page', 1); - } + /** + * @return int + */ + private function page(): int + { + return (int)$this->get('page', 1); + } - /** - * @param $name - * @param null $default - * @return mixed - */ - public function query($name, $default = null): mixed - { - return $this->__gets__($name, $default); - } + /** + * @param $name + * @param null $default + * @return mixed + */ + public function query($name, $default = null): mixed + { + return $this->_gets[$name] ?? $default; + } - /** - * @return int - */ - public function size(): int - { - return (int)$this->get('size', 20); - } + /** + * @return int + */ + public function size(): int + { + return (int)$this->get('size', 20); + } - /** - * @param $name - * @param null $defaultValue - * @return mixed - */ - public function get($name, $defaultValue = null): mixed - { - return $this->__gets__($name, $defaultValue); - } + /** + * @param $name + * @param null $defaultValue + * @return mixed + */ + public function get($name, $defaultValue = null): mixed + { + return $this->_gets[$name] ?? $defaultValue; + } - /** - * @param $name - * @param null $defaultValue - * @return mixed - */ - public function post($name, $defaultValue = null): mixed - { - return $this->__posts__($name, $defaultValue); - } + /** + * @param $name + * @param null $defaultValue + * @return mixed + */ + public function post($name, $defaultValue = null): mixed + { + return $this->_posts[$name] ?? $defaultValue; + } - /** - * @param $name - * @return bool|string - * @throws Exception - */ - public function json($name): bool|string - { - $data = $this->array($name); - if (empty($data)) { - return Json::encode([]); - } else if (!is_array($data)) { - return Json::encode([]); - } - return Json::encode($data); - } + /** + * @param $name + * @return bool|string + * @throws Exception + */ + public function json($name): bool|string + { + $data = $this->array($name); + if (empty($data)) { + return Json::encode([]); + } else if (!is_array($data)) { + return Json::encode([]); + } + return Json::encode($data); + } - /** - * @return array - */ - public function gets(): array - { - return $this->__gets__(); - } + /** + * @return array + */ + public function gets(): array + { + return $this->_gets; + } - /** - * @return array - */ - public function params(): array - { - return array_merge($this->__posts__(), $this->__gets__()); - } + /** + * @return array + */ + public function params(): array + { + return array_merge($this->_gets, $this->_posts); + } - /** - * @return array - */ - public function load(): array - { - return array_merge($this->__posts__(), $this->__gets__(), $this->__files__()); - } + /** + * @return array + */ + public function load(): array + { + return array_merge($this->_files, $this->_gets, $this->_posts); + } - /** - * @param $name - * @param array $defaultValue - * @return mixed - */ - public function array($name, array $defaultValue = []): mixed - { - return $this->__posts__($name, $defaultValue); - } + /** + * @param $name + * @param array $defaultValue + * @return mixed + */ + public function array($name, array $defaultValue = []): mixed + { + return $this->_posts[$name] = $defaultValue; + } - /** - * @param $name - * @return File|null - * @throws ReflectionException - * @throws NotFindClassException - */ - public function file($name): File|null - { - $param = $this->__files__($name); - if (!empty($param)) { - $param['class'] = File::class; - return Snowflake::createObject($param); - } - return null; - } + /** + * @param $name + * @return File|null + * @throws ReflectionException + * @throws NotFindClassException + */ + public function file($name): File|null + { + $param = $this->_files[$name] ?? null; + if (!empty($param)) { + $param['class'] = File::class; + return Snowflake::createObject($param); + } + return null; + } - /** - * @param string $name - * @param bool $isNeed - * @return mixed - * @throws RequestException - */ - private function required(string $name, bool $isNeed = false): mixed - { - $int = $this->__posts__($name); - if (is_null($int) && $isNeed === true) { - throw new RequestException("You need to add request parameter $name"); - } - return $int; - } + /** + * @param string $name + * @param bool $isNeed + * @return mixed + * @throws RequestException + */ + private function required(string $name, bool $isNeed = false): mixed + { + $int = $this->_posts[$name] ?? null; + if (is_null($int) && $isNeed === true) { + throw new RequestException("You need to add request parameter $name"); + } + return $int; + } - /** - * @param string $name - * @param bool $isNeed - * @param array|int|null $min - * @param int|null $max - * @return int|null - * @throws RequestException - */ - public function int(string $name, bool $isNeed = FALSE, array|int|null $min = NULL, int|null $max = NULL): ?int - { - return (int)$this->required($name, $isNeed); - } + /** + * @param string $name + * @param bool $isNeed + * @param array|int|null $min + * @param int|null $max + * @return int|null + * @throws RequestException + */ + public function int(string $name, bool $isNeed = FALSE, array|int|null $min = NULL, int|null $max = NULL): ?int + { + return (int)$this->required($name, $isNeed); + } - /** - * @param string $name - * @param bool $isNeed - * @param int $round - * @return float|null - * @throws RequestException - */ - public function float(string $name, bool $isNeed = FALSE, int $round = 0): ?float - { - return (float)$this->required($name, $isNeed); - } + /** + * @param string $name + * @param bool $isNeed + * @param int $round + * @return float|null + * @throws RequestException + */ + public function float(string $name, bool $isNeed = FALSE, int $round = 0): ?float + { + return (float)$this->required($name, $isNeed); + } - /** - * @param string $name - * @param bool $isNeed - * @param int|array|null $length - * - * @return string|null - * @throws RequestException - */ - public function string(string $name, bool $isNeed = FALSE, int|array|null $length = NULL): ?string - { - return (string)$this->required($name, $isNeed); - } + /** + * @param string $name + * @param bool $isNeed + * @param int|array|null $length + * + * @return string|null + * @throws RequestException + */ + public function string(string $name, bool $isNeed = FALSE, int|array|null $length = NULL): ?string + { + return (string)$this->required($name, $isNeed); + } - /** - * @param string $name - * @param bool $isNeed - * - * @return string|null - * @throws RequestException - */ - public function email(string $name, bool $isNeed = FALSE): ?string - { - $email = $this->required($name, $isNeed); - if ($email === null) { - return null; - } - if (!preg_match('/^\w+([.-_]\w+)+@\w+(\.\w+)+$/', $email)) { - throw new RequestException("Request parameter $name is in the wrong format", 4001); - } - return $email; - } + /** + * @param string $name + * @param bool $isNeed + * + * @return string|null + * @throws RequestException + */ + public function email(string $name, bool $isNeed = FALSE): ?string + { + $email = $this->required($name, $isNeed); + if ($email === null) { + return null; + } + if (!preg_match('/^\w+([.-_]\w+)+@\w+(\.\w+)+$/', $email)) { + throw new RequestException("Request parameter $name is in the wrong format", 4001); + } + return $email; + } - /** - * @param string $name - * @param bool $isNeed - * - * @return bool - * @throws RequestException - */ - public function bool(string $name, bool $isNeed = FALSE): bool - { - return (boolean)$this->required($name, $isNeed); - } + /** + * @param string $name + * @param bool $isNeed + * + * @return bool + * @throws RequestException + */ + public function bool(string $name, bool $isNeed = FALSE): bool + { + return (boolean)$this->required($name, $isNeed); + } - /** - * @param string $name - * @param int|null $default - * - * @return int|string|null - * @throws RequestException - */ - public function timestamp(string $name, int|null $default = NULL): null|int|string - { - $value = $this->required($name, false); - if ($value === null) { - return $default; - } - if (!is_numeric($value)) { - throw new RequestException('The request param :attribute not is a timestamp value'); - } - if (strlen((string)$value) != 10) { - throw new RequestException('The request param :attribute not is a timestamp value'); - } - if (!date('YmdHis', $value)) { - throw new RequestException('The request param :attribute format error', 4001); - } - return $value; - } + /** + * @param string $name + * @param int|null $default + * + * @return int|string|null + * @throws RequestException + */ + public function timestamp(string $name, int|null $default = NULL): null|int|string + { + $value = $this->required($name, false); + if ($value === null) { + return $default; + } + if (!is_numeric($value)) { + throw new RequestException('The request param :attribute not is a timestamp value'); + } + if (strlen((string)$value) != 10) { + throw new RequestException('The request param :attribute not is a timestamp value'); + } + if (!date('YmdHis', $value)) { + throw new RequestException('The request param :attribute format error', 4001); + } + return $value; + } - /** - * @param string $name - * @param string|null $default - * - * @return string|null - * @throws RequestException - */ - public function datetime(string $name, string $default = NULL): string|null - { - $value = $this->required($name, false); - if ($value === null) { - return $default; - } - $match = '/^\d{4}.*?([1-12]).*([1-31]).*?[0-23].*?[0-59].*?[0-59].*?$/'; - $match = preg_match($match, $value, $result); - if (!$match || $result[0] != $value) { - throw new RequestException('The request param :attribute format error', 4001); - } - return $value; - } + /** + * @param string $name + * @param string|null $default + * + * @return string|null + * @throws RequestException + */ + public function datetime(string $name, string $default = NULL): string|null + { + $value = $this->required($name, false); + if ($value === null) { + return $default; + } + $match = '/^\d{4}.*?([1-12]).*([1-31]).*?[0-23].*?[0-59].*?[0-59].*?$/'; + $match = preg_match($match, $value, $result); + if (!$match || $result[0] != $value) { + throw new RequestException('The request param :attribute format error', 4001); + } + return $value; + } - /** - * @param string $name - * @param string|null $default - * - * @return string|null - * @throws RequestException - */ - public function date(string $name, string $default = NULL): string|null - { - $value = $this->required($name, false); - if ($value === null) { - return $default; - } - $match = '/^\d{4}.*?([1-12]).*([1-31])$/'; - $match = preg_match($match, $value, $result); - if (!$match || $result[0] != $value) { - throw new RequestException('The request param :attribute format error', 4001); - } - return $value; - } + /** + * @param string $name + * @param string|null $default + * + * @return string|null + * @throws RequestException + */ + public function date(string $name, string $default = NULL): string|null + { + $value = $this->required($name, false); + if ($value === null) { + return $default; + } + $match = '/^\d{4}.*?([1-12]).*([1-31])$/'; + $match = preg_match($match, $value, $result); + if (!$match || $result[0] != $value) { + throw new RequestException('The request param :attribute format error', 4001); + } + return $value; + } - /** - * @param string $name - * @param string|null $default - * @return string|null - * @throws RequestException - */ - public function ip(string $name, string $default = NULL): string|null - { - $value = $this->required($name, false); - if ($value == NULL) { - return $default; - } - $match = preg_match('/^\d{1,3}(\.\d{1,3}){3}$/', $value, $result); - if (!$match || $result[0] != $value) { - throw new RequestException('The request param :attribute format error', 4001); - } - return $value; - } + /** + * @param string $name + * @param string|null $default + * @return string|null + * @throws RequestException + */ + public function ip(string $name, string $default = NULL): string|null + { + $value = $this->required($name, false); + if ($value == NULL) { + return $default; + } + $match = preg_match('/^\d{1,3}(\.\d{1,3}){3}$/', $value, $result); + if (!$match || $result[0] != $value) { + throw new RequestException('The request param :attribute format error', 4001); + } + return $value; + } - /** - * @param $name - * @return mixed - */ - public function __get($name): mixed - { - $load = $this->load(); + /** + * @param $name + * @return mixed + */ + public function __get($name): mixed + { + $load = $this->load(); - return $load[$name] ?? null; - } - - - /** - * @param null $name - * @param null $default - * @return mixed - */ - private function __posts__($name = null, $default = null): mixed - { - /** @var \Swoole\Http\Request $content */ - $content = Context::getContext(\Swoole\Http\Request::class); - if (!empty($name)) { - return $content->post[$name] ?? $default; - } - return $content->post ?? []; - } - - - /** - * @param null $name - * @param null $default - * @return mixed - */ - private function __gets__($name = null, $default = null): mixed - { - /** @var \Swoole\Http\Request $content */ - $content = Context::getContext(\Swoole\Http\Request::class); - if (!empty($name)) { - return $content->get[$name] ?? $default; - } - return $content->get ?? []; - } - - - /** - * @param null $name - * @return mixed - */ - private function __files__($name = null): mixed - { - /** @var Request $content */ - $content = Context::getContext(Request::class); - if (!empty($name)) { - return $content->_f[$name] ?? null; - } - return $content->files ?? []; - } + return $load[$name] ?? null; + } } diff --git a/Server/Constrict/Request.php b/Server/Constrict/Request.php index 4e513376..7e98e3f6 100644 --- a/Server/Constrict/Request.php +++ b/Server/Constrict/Request.php @@ -46,23 +46,20 @@ class Request implements RequestInterface { Context::setContext(Response::class, new Response()); - try { - $sRequest = new HttpResponse(); + $sRequest = new HttpResponse(); - $sRequest->headers = new HttpHeaders(); - $sRequest->headers->setHeaders(array_merge($request->header, $request->server)); + $sRequest->headers = new HttpHeaders(); + $sRequest->headers->setHeaders(array_merge($request->header, $request->server)); - $sRequest->setUri($sRequest->headers->getRequestUri()); - $sRequest->setClientId($request->fd); + $sRequest->setUri($sRequest->headers->getRequestUri()); + $sRequest->setClientId($request->fd); + + $sRequest->params = new HttpParams(); + $sRequest->params->setRawContent($request->rawContent(), $sRequest->headers->getContentType()); + $sRequest->params->setFiles($request->files); + $sRequest->params->setPosts($request->post); + $sRequest->params->setGets($request->get); - $sRequest->params = new HttpParams(); - $sRequest->params->setRawContent($request->rawContent(), $sRequest->headers->getContentType()); - $sRequest->params->setFiles($request->files); - $sRequest->params->setPosts($request->post); - $sRequest->params->setGets($request->get); - }catch (\Throwable $exception){ - var_dump($exception); - } Context::setContext(HttpResponse::class, $sRequest);