canParse($url)) { return $parser; } } throw new Exception("No parser found for URL: {$url}"); } 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; } } }