31 lines
		
	
	
		
			744 B
		
	
	
	
		
			PHP
		
	
		
		
			
		
	
	
			31 lines
		
	
	
		
			744 B
		
	
	
	
		
			PHP
		
	
|  | <?php | ||
|  | 
 | ||
|  | namespace App\Core; | ||
|  | 
 | ||
|  | class MiddlewarePipeline { | ||
|  |     /** @var callable[] */ | ||
|  |     private $middlewares = []; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Add a middleware to the pipeline. | ||
|  |      * @param callable $middleware Should return false to halt execution. | ||
|  |      */ | ||
|  |     public function add(callable $middleware): void { | ||
|  |         $this->middlewares[] = $middleware; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Execute all middlewares in sequence. | ||
|  |      * @return bool False if any middleware returns false, true otherwise. | ||
|  |      */ | ||
|  |     public function run(): bool { | ||
|  |         foreach ($this->middlewares as $middleware) { | ||
|  |             $result = call_user_func($middleware); | ||
|  |             if ($result === false) { | ||
|  |                 return false; | ||
|  |             } | ||
|  |         } | ||
|  |         return true; | ||
|  |     } | ||
|  | } |