Совместимость обеспечивается использованием объектно-ориентированного подхода с применением интерфейсов или через duck-typing.
if ($router instanceof RouterInterface // проверка через ООП
|| method_exists($router, 'route')) // проверка через duck-typing
{
$route = $router->route($this->request);
if (false!==$route)
{
/* вызов диспетчера роутов */
/* по окончении блока кода надо завершить цикл поиска роутеров */
return;
}
}