Тогда не подскажите наилучший способ передачи инфраструктурных зависимостей между классами.
Идея использовать Ambient Context была позаимствована из статьи sergeyteplyakov.blogspot.ru/2013/03/di-service-loc... где как раз обсуждается минусы Service Locator который как правило для этих целей используют.
Вам стоит попробовать сначала наиболее популярный фреймворки - теория без практики даёт только иллюзию знаний. Однозначно стоит знать Symfony, потом посмотрите на Laravel.
- в методы в случаях инъекций по интерфейсу, правильно ли я понял, вы предлагаете не жесткую зависимость от инфраструктурого кода (зависимость через конструктор) переместив установку зависимости в метод (сеттер). То есть функционал должен работать по сути без инфраструктурной зависимости.