这个妹妹我曾见过的。
不是我自身的,却是我需要的,都是我所依赖的。一切需要外部提供的,都是需要进行依赖注入的。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php
class Luntai { public function roll() { echo "轮胎滚"; } }
class Car { public function run() { $luntai = new Luntai(); $luntai->roll(); echo "汽车跑起来了"; } }
|
这种 在一个类里实例化另外一个类,耦合程度太高,改写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?php
class Luntai { public function roll() { echo "轮胎滚"; } }
class Car { public $luntai; public function __construct($luntai) { $this->luntai = $luntai; } public function run() { $this->luntai->roll(); echo "汽车跑起来了"; }
} (new Car(new Luntai()))->run();
|
控制反转和依赖注入的关系
有时候我们会把控制反转和依赖注入等同,但实际上它们有着本质上的不同。
控制反转是一种思想
依赖注入是一种设计模式
IoC框架使用依赖注入作为实现控制反转的方式,但是控制反转还有其他的实现方式,所以不能将控制反转和依赖注入等同。