Skip to content

Commit 2e6a77f

Browse files
authored
Refactor middleware validation and enqueueing
Refactor middleware validation and handling in Pipeline.
1 parent 2b5721f commit 2e6a77f

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/Pipeline.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function __construct(
8181
$this->middlewares = new \SplQueue();
8282

8383
foreach ($middlewares as $i => $middleware) {
84-
$this->isMiddlewareInstance($middleware, $i);
84+
$this->validateMiddleware($middleware, $i);
8585
$this->middlewares->enqueue($middleware);
8686
}
8787
}
@@ -304,6 +304,8 @@ public function pipe(iterable|MiddlewareInterface $middlewares, bool $prepend =
304304
$middlewares = [$middlewares];
305305
}
306306

307+
// Collect and validate all middleware first
308+
$middlewareArray = [];
307309
foreach ($middlewares as $i => $middleware) {
308310
$this->isMiddlewareInstance($middleware, $i);
309311

@@ -315,8 +317,19 @@ public function pipe(iterable|MiddlewareInterface $middlewares, bool $prepend =
315317
throw new \RuntimeException('Cannot add pipeline that contains reference to this pipeline');
316318
}
317319

318-
$prepend ? $copy->middlewares->unshift($middleware) :
320+
$middlewareArray[] = $middleware;
321+
}
322+
323+
// Add middleware in correct order
324+
if ($prepend) {
325+
// Reverse array so unshift maintains the original order
326+
foreach (array_reverse($middlewareArray) as $middleware) {
327+
$copy->middlewares->unshift($middleware);
328+
}
329+
} else {
330+
foreach ($middlewareArray as $middleware) {
319331
$copy->middlewares->enqueue($middleware);
332+
}
320333
}
321334

322335
return $copy;

0 commit comments

Comments
 (0)