NicoSeigaResolver::class, '~nijie\.info/view\.php~' => NijieResolver::class, '~komiflo\.com(/#!)?/comics/(\\d+)~' => KomifloResolver::class, '/.*/' => OGPResolver::class ]; public function resolve(string $url): Metadata { foreach ($this->rules as $pattern => $class) { if (preg_match($pattern, $url) === 1) { $resolver = new $class; return $resolver->resolve($url); } } throw new \UnexpectedValueException('URL not matched.'); } }