*/ 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); } } }