| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- <?php
- declare(strict_types=1);
- namespace Glacier\Core;
- /**
- * 中间件注册表与执行管道。
- * 中间件签名:function(array $params): void
- * - 通过:正常返回;
- * - 拒绝:调用 Response::xxx() 终止(403/重定向等)。
- * 本期落地:csrf(表单/API 校验);预留:auth / permission(空实现)。
- */
- final class Middleware
- {
- /** @var array<string, callable> */
- private static array $registry = [];
- public static function register(string $name, callable $middleware): void
- {
- self::$registry[$name] = $middleware;
- }
- public static function resolve(string $name): callable
- {
- if (!isset(self::$registry[$name])) {
- throw new \InvalidArgumentException("未注册的中间件: {$name}");
- }
- return self::$registry[$name];
- }
- /** 按顺序执行中间件链。 */
- public static function run(array $names, array $params): void
- {
- foreach ($names as $name) {
- $middleware = self::resolve($name);
- $middleware($params);
- }
- }
- }
|