64 lines
1.2 KiB
PHP
64 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Server\Constrict;
|
|
|
|
use Http\Context\Context;
|
|
use Server\Message\Request as Psr7Request;
|
|
use Http\Context\Response;
|
|
use Kiri\Kiri;
|
|
use ReflectionException;
|
|
use Server\RequestInterface;
|
|
|
|
|
|
/**
|
|
* @mixin Psr7Request
|
|
*/
|
|
class Request implements RequestInterface
|
|
{
|
|
|
|
|
|
/**
|
|
* @param $name
|
|
* @param $args
|
|
* @return mixed
|
|
*/
|
|
public function __call($name, $args)
|
|
{
|
|
if (!Context::hasContext(Psr7Request::class)) {
|
|
$request = Context::setContext(Psr7Request::class, new Psr7Request());
|
|
} else {
|
|
$request = Context::getContext(Psr7Request::class);
|
|
}
|
|
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
|
|
return Context::getContext(Psr7Request::class)->{$name};
|
|
}
|
|
|
|
|
|
/**
|
|
* @param \Swoole\Http\Request $request
|
|
* @return Request
|
|
* @throws ReflectionException
|
|
*/
|
|
public static function create(\Swoole\Http\Request $request): RequestInterface
|
|
{
|
|
Context::setContext(Response::class, new Response());
|
|
|
|
Context::setContext(Psr7Request::class, Psr7Request::parseRequest($request));
|
|
|
|
return Kiri::getDi()->get(Request::class);
|
|
}
|
|
}
|