Когда я впервые увидел компоненты внедрения зависимостей, такие как PHP-DI, Symfony2 DI и т. Д., Я понял, что есть способ автоматически внедрить экземпляр любого класса в любой с помощью одного экземпляра.
Итак, 1. Создайте экземпляр в корневом классе, например $foo = new Foo()
2. И затем я могу использовать этот экземпляр в любом объекте (например, глобальном синглтоне) без передачи ссылки на конструктор или метод класса, из которого я хочу вызвать.
Но я обнаружил, что в основном я могу использовать Dependency Injection двумя способами: 1. Передача ссылки на экземпляр конструктору 2. Создание контейнера, в котором расположены все объекты. Этот контейнер можно внедрить в другие классы, но «Это не рекомендуется».
Поскольку оба способа могут быть легко реализованы на чистом PHP, первый ясен, второй можно решить с помощью статических свойств, так зачем использовать PHP-DI или Symfony2 для этой работы?