На данный момент имеется библиотека, где по плохому создаются экземпляры классов-зависимостей прямо в конструкторе.
Надо:
1. положить все сторонние зависимости в контейнер
2. положить библиотеку в контейнер
3. придумать как внедрить зависимости в библиотеку и ее классы
4. использовать класс как раньше.
Не понимаю, как использовать зависимости в своих классах. Пока на ум пришла одна мысль - использовать главный App класс, который будет глобален в NS библиотеки и затем, используя синглтон получать объект контейнера в конструкторе зависимых классов.
$app = new Illuminate\Container\Container();
$app->bind('app', $app);
$app->bind('log', $log);
class A extends SplObjectStorage
{
protected $log = null;
public function __construct()
{
//как я должен использовать контейнер, чтобы напрямую не передавать его в конструктор при вызове?
$this->log = new MongoLog();
}
}
class B extends A {}
class C extends A {}
$a = new A(); // т.е. оставить вызов и использование библиотеки таким, каков он есть