> */ private static array $parsers = [ VrtArticleParser::class, BelgaArticleParser::class, ]; public static function getParser(string $url): ArticleParserInterface { foreach (self::$parsers as $parserClass) { $parser = new $parserClass(); if ($parser->canParse($url)) { return $parser; } } throw new Exception("No parser found for URL: {$url}"); } /** * @return array */ public static function getSupportedSources(): array { return array_map(function($parserClass) { $parser = new $parserClass(); return $parser->getSourceName(); }, self::$parsers); } /** * @param class-string $parserClass */ public static function registerParser(string $parserClass): void { if (!in_array($parserClass, self::$parsers)) { self::$parsers[] = $parserClass; } } }