например
class Parser
{
public static function factory($url)
{
$url = Functions::getRealUrl($url);
$className = static::getParserClassName($url);
$instance = new $className($url);
if (!($instance instanceof Parser_Interface)) {
throw new Exception("{$className} must implement Parser_Interface");
}
return $instance;
}
}
Фабричный метод создаёт объект парсера в зависимости от url (для некоторых доменов специфичный, для некоторых - дефолтный).
Используется примерно так:
$parser = Parser::factory('https://toster.ru/q/286564');
$parser->getTitle();
$parser->getBody();