This commit is contained in:
2021-04-22 14:37:28 +08:00
parent 32983862fb
commit 7024e07115
2 changed files with 8 additions and 83 deletions
+6 -46
View File
@@ -18,23 +18,15 @@ use Snowflake\Snowflake;
/** /**
* Class WebController * Class WebController
* @package Snowflake\Snowflake\Web * @package Snowflake\Snowflake\Web
* @property-read HttpParams $input
* @property-read HttpHeaders $headers
* @property-read Request $request
*/ */
class Controller extends HttpService class Controller extends HttpService
{ {
use TraitApplication; use TraitApplication;
/** @var null|HttpParams $input */
public null|HttpParams $input;
/** @var null|HttpHeaders */
public null|HttpHeaders $headers;
/** @var null|Request */
public null|Request $request;
/** /**
* Controller constructor. * Controller constructor.
@@ -57,40 +49,13 @@ class Controller extends HttpService
} }
/**
* @param null|HttpParams $input
*/
public function setInput(?HttpParams $input): void
{
$this->input = $input;
}
/**
* @param ?HttpHeaders $headers
*/
public function setHeaders(?HttpHeaders $headers): void
{
$this->headers = $headers;
}
/**
* @param ?Request $request
*/
public function setRequest(?Request $request): void
{
$this->request = $request;
}
/** /**
* @return ?HttpParams * @return ?HttpParams
* @throws Exception * @throws Exception
*/ */
public function getInput(): ?HttpParams public function getInput(): ?HttpParams
{ {
if (!$this->input) { return \request()->params;
$this->input = $this->getRequest()->params;
}
return $this->input;
} }
/** /**
@@ -99,10 +64,7 @@ class Controller extends HttpService
*/ */
public function getHeaders(): ?HttpHeaders public function getHeaders(): ?HttpHeaders
{ {
if (!$this->headers && $this->getRequest()) { return \request()->headers;
$this->headers = $this->getRequest()->headers;
}
return $this->headers;
} }
/** /**
@@ -120,9 +82,7 @@ class Controller extends HttpService
/** /**
* @param $name * @param $name
* @return mixed * @return mixed
* @throws ComponentException * @throws Exception
* @throws ReflectionException
* @throws NotFindClassException
*/ */
public function __get($name): mixed public function __get($name): mixed
{ {
+2 -37
View File
@@ -8,9 +8,6 @@ namespace HttpServer\Route\Dispatch;
use Closure; use Closure;
use HttpServer\Controller; use HttpServer\Controller;
use HttpServer\Http\Context; use HttpServer\Http\Context;
use ReflectionException;
use Snowflake\Exception\NotFindClassException;
use Snowflake\Snowflake;
/** /**
* Class Dispatch * Class Dispatch
@@ -27,10 +24,7 @@ class Dispatch
/** /**
* @param $handler * @param $handler
* @param $request
* @return static * @return static
* @throws NotFindClassException
* @throws ReflectionException
*/ */
public static function create($handler): static public static function create($handler): static
{ {
@@ -39,7 +33,6 @@ class Dispatch
if ($handler instanceof Closure) { if ($handler instanceof Closure) {
$class->bind(); $class->bind();
} }
$class->bindParam();
return $class; return $class;
} }
@@ -60,39 +53,11 @@ class Dispatch
/** /**
* @throws ReflectionException *
* @throws NotFindClassException
*/ */
protected function bind() protected function bind()
{ {
$class = $this->bindRequest(Snowflake::createObject(Controller::class)); $this->handler = Closure::bind($this->handler, new Controller());
$this->handler = Closure::bind($this->handler, $class);
}
/**
* @param $controller
* @return mixed
*/
protected function bindRequest($controller): mixed
{
$controller->request = Context::getContext('request');
$controller->headers = $controller->request?->headers;
$controller->input = $controller->request?->params;
return $controller;
}
/**
* 参数绑定
*/
protected function bindParam()
{
if ($this->handler instanceof Closure) {
return;
}
$controller = $this->handler[0];
$this->bindRequest($controller);
} }
} }