canParse($url)) { return $parser; } } throw new Exception("No homepage parser found for URL: {$url}"); } public static function getAllParsers(): array { return array_map(fn($parserClass) => new $parserClass(), self::$parsers); } public static function getSupportedSources(): array { return array_map(function($parserClass) { $parser = new $parserClass(); return $parser->getSourceName(); }, self::$parsers); } public static function registerParser(string $parserClass): void { if (!in_array($parserClass, self::$parsers)) { self::$parsers[] = $parserClass; } } }