This commit is contained in:
2021-03-05 16:20:49 +08:00
parent 1b0727be81
commit ae0311c81b
4 changed files with 4 additions and 114 deletions
+2 -1
View File
@@ -6,6 +6,7 @@ namespace Annotation\Route;
use Annotation\Attribute;
use Snowflake\Snowflake;
use HttpServer\IInterface\Middleware as IMiddleware;
/**
* Class Middleware
@@ -29,7 +30,7 @@ use Snowflake\Snowflake;
$array = [];
foreach ($this->middleware as $key => $value) {
$sn = Snowflake::createObject($value);
if (!($sn instanceof \HttpServer\IInterface\Middleware)) {
if (!($sn instanceof IMiddleware)) {
continue;
}
$array[] = [$sn, 'onHandler'];
+2 -1
View File
@@ -10,13 +10,14 @@ use Exception;
use HttpServer\Http\Context;
use HttpServer\Http\Request;
use HttpServer\Http\Response;
use HttpServer\IInterface\Middleware;
/**
* Class CoreMiddleware
* @package Snowflake\Snowflake\Route
* 跨域中间件
*/
class CoreMiddleware implements \HttpServer\IInterface\Middleware
class CoreMiddleware implements Middleware
{
/**
-111
View File
@@ -1,111 +0,0 @@
<?php
/**
* Created by PhpStorm.
* User: admin
* Date: 2019-03-20
* Time: 02:17
*/
declare(strict_types=1);
namespace HttpServer\Route;
use Annotation\Route\After;
use Annotation\Route\Interceptor;
use Annotation\Route\Middleware as RMiddleware;
use Exception;
use Annotation\Route\Limits;
use HttpServer\Route\Dispatch\Dispatch;
use Snowflake\Snowflake;
/**
* Class Middleware
* @package Snowflake\Snowflake\Route
*/
class Middleware
{
/** @var array */
private array $middleWares = [];
/**
* @param $call
* @return $this
*/
public function set($call): static
{
$this->middleWares[] = $call;
return $this;
}
/**
* @param array $array
* @return $this
*/
public function setMiddleWares(array $array): static
{
$this->middleWares = $array;
return $this;
}
/**
* @param Node $node
* @return mixed
* @throws Exception
*/
public function getGenerate(Node $node): mixed
{
return $node->callback = Reduce::reduce(function () use ($node) {
return Dispatch::create($node->handler, func_get_args())->dispatch();
}, $this->annotation($node));
}
/**
* @param Node $node
* @return array
*/
protected function annotation(Node $node): array
{
$middleWares = $node->getMiddleWares();
$middleWares = $this->annotation_limit($node, $middleWares);
$middleWares = $this->annotation_interceptor($node, $middleWares);
return $middleWares;
}
/**
* @param Node $node
* @param $middleWares
* @return array
*/
protected function annotation_interceptor(Node $node, $middleWares = []): array
{
if (!$node->hasInterceptor()) {
return $middleWares;
}
foreach ($node->getInterceptor() as $item) {
$middleWares[] = $item;
}
return $middleWares;
}
/**
* @param Node $node
* @param $middleWares
* @return array
*/
protected function annotation_limit(Node $node, $middleWares = []): array
{
if (!$node->hasLimits()) {
return $middleWares;
}
foreach ($node->getLimits() as $item) {
$middleWares[] = $item;
}
return $middleWares;
}
}
-1
View File
@@ -8,7 +8,6 @@ use Closure;
use HttpServer\IInterface\After;
use HttpServer\IInterface\Middleware;
use Snowflake\Core\Json;
use Snowflake\Event;
class Reduce
{