main
Robert 8 months ago
parent c761fd6d24
commit 5f1ac65ed8
  1. 1
      .gitignore
  2. 10
      src/libs/Middleware.php
  3. 20
      src/testMiddleware.php

1
.gitignore vendored

@ -1,2 +1,3 @@
composer.lock composer.lock
vendor/ vendor/
*.swp

@ -4,7 +4,7 @@ namespace libs;
interface Middleware interface Middleware
{ {
public function handle($request, \Closure $next, ...$parameters); public function handle(array $request, \Closure $next, mixed ...$parameters): mixed;
} }
class Pipeline class Pipeline
@ -12,7 +12,7 @@ class Pipeline
protected array $middleware = []; protected array $middleware = [];
protected $request; protected $request;
public function send($request): Object public function send(array $request): Object
{ {
$this->request = $request; $this->request = $request;
return $this; return $this;
@ -24,7 +24,7 @@ class Pipeline
return $this; return $this;
} }
public function then(\Closure $destination) public function then(\Closure $destination): array
{ {
$pipeline = array_reduce( $pipeline = array_reduce(
array_reverse($this->parseMiddleware($this->middleware)), array_reverse($this->parseMiddleware($this->middleware)),
@ -37,14 +37,14 @@ class Pipeline
return $pipeline($this->request); return $pipeline($this->request);
} }
protected function parseMiddleware(array $middleware) protected function parseMiddleware(array $middleware): array
{ {
return array_map(function ($m) { return array_map(function ($m) {
return is_string($m) ? explode(':', $m, 2) : $m; return is_string($m) ? explode(':', $m, 2) : $m;
}, $middleware); }, $middleware);
} }
protected function carry() protected function carry(): mixed
{ {
return function ($stack, $middleware) { return function ($stack, $middleware) {
return function ($request) use ($stack, $middleware) { return function ($request) use ($stack, $middleware) {

@ -4,7 +4,10 @@ require "libs/autoload.php";
class TrimStrings implements libs\Middleware class TrimStrings implements libs\Middleware
{ {
public function handle($request, \Closure $next, ...$parameters) /**
* @param array<string, string> $request
*/
public function handle(array $request, \Closure $next, mixed ...$parameters): mixed
{ {
foreach ($request as $key => $value) { foreach ($request as $key => $value) {
if (is_string($value)) { if (is_string($value)) {
@ -18,7 +21,10 @@ class TrimStrings implements libs\Middleware
class ucStrings implements libs\Middleware class ucStrings implements libs\Middleware
{ {
public function handle($request, \Closure $next, ...$parameters) /**
* @param array<string, string> $request
*/
public function handle(array $request, \Closure $next, mixed ...$parameters): mixed
{ {
foreach ($request as $key => $value) { foreach ($request as $key => $value) {
if (is_string($value)) { if (is_string($value)) {
@ -32,7 +38,10 @@ class ucStrings implements libs\Middleware
class ConvertEmptyStringsToNull implements libs\Middleware class ConvertEmptyStringsToNull implements libs\Middleware
{ {
public function handle($request, \Closure $next, ...$parameters) /**
* @param array<string, string> $request
*/
public function handle(array $request, \Closure $next, mixed ...$parameters): mixed
{ {
foreach ($request as $key => $value) { foreach ($request as $key => $value) {
if ($value === '') { if ($value === '') {
@ -46,7 +55,10 @@ class ConvertEmptyStringsToNull implements libs\Middleware
class RoleCheck implements libs\Middleware class RoleCheck implements libs\Middleware
{ {
public function handle($request, Closure $next, ...$parameters) /**
* @param array<string, string> $request
*/
public function handle(array $request, Closure $next, mixed ...$parameters): mixed
{ {
$role = $parameters[0] ?? ''; $role = $parameters[0] ?? '';
$level = $parameters[1] ?? 'high'; $level = $parameters[1] ?? 'high';

Loading…
Cancel
Save