Files
kiri-core/Server/Constrict/Request.php
T

78 lines
1.8 KiB
PHP
Raw Normal View History

2021-08-05 19:14:08 +08:00
<?php
namespace Server\Constrict;
use HttpServer\Http\Context;
use HttpServer\Http\HttpHeaders;
use HttpServer\Http\HttpParams;
use HttpServer\Http\Request as HttpResponse;
use HttpServer\Http\Response;
use ReflectionException;
use Server\RequestInterface;
2021-08-11 01:04:57 +08:00
use Kiri\Abstracts\BaseObject;
use Kiri\Exception\NotFindClassException;
use Kiri\Kiri;
2021-08-05 19:14:08 +08:00
/**
2021-08-05 19:15:39 +08:00
* @mixin HttpResponse
2021-08-05 19:14:08 +08:00
*/
class Request implements RequestInterface
{
2021-08-06 00:59:27 +08:00
/**
* @param $name
* @param $args
* @return mixed
*/
public function __call($name, $args)
{
$request = Context::getContext(HttpResponse::class);
if (property_exists($request, $name)) {
return $request->{$name};
2021-08-05 22:25:20 +08:00
}
2021-08-06 00:59:27 +08:00
return $request->{$name}(...$args);
}
2021-08-05 19:14:08 +08:00
2021-08-05 23:03:46 +08:00
/**
* @param $name
* @return mixed
*/
2021-08-06 00:59:27 +08:00
public function __get($name): mixed
2021-08-05 23:03:46 +08:00
{
2021-08-05 23:04:34 +08:00
// TODO: Change the autogenerated stub
return Context::getContext(HttpResponse::class)->{$name};
2021-08-05 23:03:46 +08:00
}
/**
2021-08-06 00:59:27 +08:00
* @param \Swoole\Http\Request $request
* @return Request
* @throws ReflectionException
* @throws NotFindClassException
*/
public static function create(\Swoole\Http\Request $request): RequestInterface
{
2021-08-05 22:36:05 +08:00
Context::setContext(Response::class, new Response());
2021-08-05 22:55:23 +08:00
$sRequest = new HttpResponse();
2021-08-05 19:14:08 +08:00
2021-08-06 00:50:25 +08:00
$sRequest->setHeaders(array_merge($request->header, $request->server));
2021-08-05 22:49:20 +08:00
2021-08-06 00:50:25 +08:00
$sRequest->setUri($sRequest->getRequestUri());
2021-08-05 22:55:23 +08:00
$sRequest->setClientId($request->fd);
2021-08-06 00:50:25 +08:00
$sRequest->setRawContent($request->rawContent(), $sRequest->getContentType());
2021-08-06 00:59:27 +08:00
$sRequest->setFiles($request->files ?? []);
$sRequest->setPosts($request->post ?? []);
$sRequest->setGets($request->get ?? []);
2021-08-05 22:32:19 +08:00
2021-08-05 22:38:37 +08:00
Context::setContext(HttpResponse::class, $sRequest);
2021-08-05 19:14:08 +08:00
2021-08-11 01:04:57 +08:00
return Kiri::getDi()->get(Request::class);
2021-08-06 00:59:27 +08:00
}
2021-08-05 19:14:08 +08:00
}