Middleware (промежуточное ПО) — это слой между входящим HTTP-запросом и конечным обработчиком (например, контроллером), который позволяет модифицировать запрос, ответ или выполнять дополнительные действия до/после обработки запроса. Это мощный инструмент для инкапсуляции общей логики (аутентификация, логирование, CORS и т.д.).
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return response('Доступ запрещен', 403);
}
return $next($request); // Передаем запрос дальше
}
}
// В файле app/Http/Kernel.php
protected $routeMiddleware = [
'age' => \App\Http\Middleware\CheckAge::class,
];
Использование в роуте:
Route::get('/content', function () {
// Контент для взрослых
})->middleware('age');
<?php
class MiddlewareStack
{
private $middlewares = [];
public function add(callable $middleware) {
$this->middlewares[] = $middleware;
}
public function handle($request) {
$handler = array_reduce(
array_reverse($this->middlewares),
function($next, $middleware) {
return function($request) use ($middleware, $next) {
return $middleware($request, $next);
};
},
function($request) { return "Final Handler"; }
);
return $handler($request);
}
}