構(gòu)造函數(shù)注入(constructor injection)是依賴注入最常見的形式之一够委。
由名稱可以看出,該技術(shù)需要我們把所有依賴顯示的體現(xiàn)在構(gòu)造函數(shù)中拜鹤。
好了灾测,直接上代碼:
<?php
/**
* 0.定義接口
*/
interface Interface_1 {
public function foo();
}
/**
*1.1 定義類,實(shí)現(xiàn)接口Interface_1
*/
class Class_1 implements Interface_1 {
function foo() {
$class_name = __CLASS__;
echo "我是{$class_name},我實(shí)現(xiàn)了接口Interface_1";
}
}
/**
*1.2 定義類禁熏,實(shí)現(xiàn)接口Interface_1
*/
class Class_2 implements Interface_1 {
function foo() {
$class_name = __CLASS__;
echo "我是{$class_name},我實(shí)現(xiàn)了接口Interface_1";
}
}
/**
*實(shí)現(xiàn)依賴注入的類(構(gòu)造函數(shù)注入)
*/
class Class_DI_Demo {
public $interface_1;
//構(gòu)造函數(shù)注入.需要Interface_1的服務(wù)
function __construct(Interface_1 $interface_1) {
$this->interface_1 = $interface_1;
}
}
$class1 = new Class_1();
$class2 = new Class_2();
//注入$class1
$class_DI_Demo = new Class_DI_Demo($class1);
$class_DI_Demo->interface_1->foo();
echo "<br>";
//注入$class2
$class_DI_Demo = new Class_DI_Demo($class2);
$class_DI_Demo->interface_1->foo();