Files
kiri-core/http-server/Constrict/Request.php
T

64 lines
1.2 KiB
PHP
Raw Normal View History

2021-08-05 19:14:08 +08:00
<?php
namespace Server\Constrict;
2021-08-17 16:52:50 +08:00
use Http\Context\Context;
2021-08-27 16:51:19 +08:00
use Server\Message\Request as Psr7Request;
2021-08-17 16:52:50 +08:00
use Http\Context\Response;
2021-08-26 18:27:20 +08:00
use Kiri\Kiri;
2021-08-05 19:14:08 +08:00
use ReflectionException;
use Server\RequestInterface;
/**
2021-08-27 16:51:19 +08:00
* @mixin Psr7Request
2021-08-05 19:14:08 +08:00
*/
class Request implements RequestInterface
{
2021-08-26 18:27:20 +08:00
/**
* @param $name
* @param $args
* @return mixed
*/
public function __call($name, $args)
{
2021-08-27 16:51:19 +08:00
if (!Context::hasContext(Psr7Request::class)) {
$request = Context::setContext(Psr7Request::class, new Psr7Request());
2021-08-26 18:27:20 +08:00
} else {
2021-08-27 16:51:19 +08:00
$request = Context::getContext(Psr7Request::class);
2021-08-26 18:27:20 +08:00
}
if (property_exists($request, $name)) {
return $request->{$name};
}
return $request->{$name}(...$args);
}
/**
* @param $name
* @return mixed
*/
public function __get($name): mixed
{
// TODO: Change the autogenerated stub
2021-08-27 16:51:19 +08:00
return Context::getContext(Psr7Request::class)->{$name};
2021-08-26 18:27:20 +08:00
}
/**
* @param \Swoole\Http\Request $request
* @return Request
* @throws ReflectionException
*/
public static function create(\Swoole\Http\Request $request): RequestInterface
{
Context::setContext(Response::class, new Response());
2021-08-27 16:51:19 +08:00
Context::setContext(Psr7Request::class, Psr7Request::parseRequest($request));
2021-08-26 18:27:20 +08:00
return Kiri::getDi()->get(Request::class);
}
2021-08-05 19:14:08 +08:00
}