Принцип DIP гласит: зависимости должны быть на абстракциях, а не от конкретной реализации.
Например такой код:
public function __construct(LoggerInterface $logger) { }
Зависимость от интерфейса.
При использовании DI-контейнеров с autowiring - работать не будет. Для работы автовайринга нужно, чтобы был указан конкретный класс в зависимости.
Объясните пожалуйста, что я не так понял? Или почему вижу противоречие в принципе DIP и инструмента для упрощения работы с зависимостями?