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-26 18:27:20 +08:00
|
|
|
use Kiri\Kiri;
|
2021-09-06 17:43:40 +08:00
|
|
|
use Server\Message\Request as RequestMessage;
|
2021-08-05 19:14:08 +08:00
|
|
|
use Server\RequestInterface;
|
2021-09-06 17:59:12 +08:00
|
|
|
use Server\Message\Response;
|
|
|
|
|
use Server\ResponseInterface;
|
2021-08-05 19:14:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2021-08-27 17:22:08 +08:00
|
|
|
* @mixin RequestMessage
|
2021-08-05 19:14:08 +08:00
|
|
|
*/
|
|
|
|
|
class Request implements RequestInterface
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
2021-09-06 17:43:40 +08:00
|
|
|
/**
|
2021-09-06 17:47:19 +08:00
|
|
|
* @return RequestMessage
|
2021-09-06 17:43:40 +08:00
|
|
|
*/
|
2021-09-06 17:47:19 +08:00
|
|
|
private function __call__(): RequestMessage
|
2021-09-06 17:43:40 +08:00
|
|
|
{
|
2021-09-06 17:46:03 +08:00
|
|
|
return Context::getContext(RequestMessage::class, new RequestMessage());
|
2021-09-06 17:43:40 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2021-08-26 18:27:20 +08:00
|
|
|
/**
|
|
|
|
|
* @param $name
|
|
|
|
|
* @param $args
|
|
|
|
|
* @return mixed
|
|
|
|
|
*/
|
|
|
|
|
public function __call($name, $args)
|
|
|
|
|
{
|
2021-09-06 17:43:40 +08:00
|
|
|
return $this->__call__()->{$name}(...$args);
|
2021-08-26 18:27:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param $name
|
|
|
|
|
* @return mixed
|
|
|
|
|
*/
|
|
|
|
|
public function __get($name): mixed
|
|
|
|
|
{
|
|
|
|
|
// TODO: Change the autogenerated stub
|
2021-09-06 17:43:40 +08:00
|
|
|
return $this->__call__()->{$name};
|
2021-08-26 18:27:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param \Swoole\Http\Request $request
|
2021-09-06 19:03:38 +08:00
|
|
|
* @return array<Request, Response>
|
2021-08-26 18:27:20 +08:00
|
|
|
*/
|
2021-09-06 19:03:38 +08:00
|
|
|
public static function create(\Swoole\Http\Request $request): array
|
2021-08-26 18:27:20 +08:00
|
|
|
{
|
2021-09-06 19:03:38 +08:00
|
|
|
Context::setContext(ResponseInterface::class, $response = new Response());
|
2021-08-26 18:27:20 +08:00
|
|
|
|
2021-08-27 17:22:08 +08:00
|
|
|
Context::setContext(RequestMessage::class, RequestMessage::parseRequest($request));
|
2021-08-26 18:27:20 +08:00
|
|
|
|
2021-09-06 19:03:38 +08:00
|
|
|
return [Kiri::getDi()->get(Request::class), $response];
|
2021-08-26 18:27:20 +08:00
|
|
|
}
|
2021-08-05 19:14:08 +08:00
|
|
|
}
|