当我第一次看到 PHP-DI、Symfony2 DI 等依赖注入组件时,我发现有一种方法可以通过一个实例化自动将任何类的实例注入到任何类中。
所以1.像2一样在根类中创建实例$foo = new Foo()
。然后我可以在任何对象(如全局单例)中使用这个实例,而无需传递对我要调用的类的构造函数或方法的引用。
但我发现,基本上我可以通过两种方式使用依赖注入 1. 将实例的引用传递给构造函数 2. 创建所有对象所在的容器。此容器可以注入其他类,但“不推荐”。
由于这两种方法都可以在纯 PHP 中轻松完成,第一种很清楚,第二种可以通过静态属性解决,那么为什么要使用 PHP-DI 或 Symfony2 来完成这项工作呢?