依赖注入模式中,为什么用对象而不是用数组传递?
依赖注入(Dependence Injection, DI) 依赖注入是控制反转的一种设计模式。依赖注入的核心是把类所依赖的单元的实例化过程,放到类的外面去实现。依赖注入的实现离不开反射。 依赖注入(Dependence Injection, DI) 所谓的依赖注入,指将依赖的对象通过参数的形式一次性传入,使用时不需要显式 new 了,比如把A类所依赖的B类、C类等以属性或者构造函数等方式注入A类而不是直接在A类中实例化。 只要不是由内部生产(比如初始化、构造函数中通过工厂方法、自行手动 new 的),而是由外部以参数或其他形式注入的,都属于依赖注入(DI) 。 依赖注入需要利用反射实现,比如: Copy class A { protected $b; public function __constrcut(B $b) { $this->b = $b; } } // 通过控制反转容器生成 A 的实例时,会通过反射发现 A 的构造函数需要一个 B 类的实例 // 于是自动向 A 类的构造函数注入 B 类的实例 $a = IoC::make(A::class); 依赖注入的实质就是把一个类 不可更换的部分 和 可更换的部分 分离开来,通过 注入 的方式来使用,从而达到解耦的目的。 比如有一个 Mysql 数据库连接类如下: Copy class Mysql { private