Возвращаясь к вопросу использования контейнера DI и написания расширений.
Вот делаю я расширение, в котором есть некий класс (назовём его главный класс расширения), который в рамках этого расширения синглтон, и другие классы из этого расширения его используют.
Ну то есть в приложении подключается класс расширения через сервис локатор.
Получается что внутри этого расширения все классы, которым нужен экземпляр главного класса - всегда должны будут его явно получать через конструктор или аргумент метода.
И делая, к примеру провайдеры
https://github.com/yiisoft/yii-cycle/tree/master/src/Schema/Provider в таком расширении — нужно будет создать абстрактный класс, где в конструктор передавать экземпляр главного класса и потом уже все провайдеры будут от этого абстрактного класса наследоваться.
так?