在PHP中,依賴注入(Dependency Injection,簡稱DI)是一種設計模式,用于降低代碼之間的耦合度。通過將依賴關系從類內部移除,使得類更加靈活、可測試和維護。在PHP中,可以使用use
關鍵字來實現依賴注入。
以下是一個簡單的示例,說明如何使用use
實現依賴注入:
// 定義一個接口
interface MessageService {
public function sendMessage(string $message);
}
// 實現接口的具體類
class EmailService implements MessageService {
public function sendMessage(string $message) {
echo "Sending email: {$message}\n";
}
}
// 另一個實現接口的具體類
class SmsService implements MessageService {
public function sendMessage(string $message) {
echo "Sending SMS: {$message}\n";
}
}
// 使用依賴注入的類
class Notification {
private $messageService;
// 通過構造函數注入依賴
public function __construct(MessageService $messageService) {
$this->messageService = $messageService;
}
public function notify(string $message) {
$this->messageService->sendMessage($message);
}
}
// 使用示例
$emailService = new EmailService();
$smsService = new SmsService();
$notificationWithEmail = new Notification($emailService);
$notificationWithSms = new Notification($smsService);
$notificationWithEmail->notify("Hello, this is an email.");
$notificationWithSms->notify("Hello, this is an SMS.");
在這個示例中,我們定義了一個MessageService
接口,以及兩個實現該接口的具體類:EmailService
和SmsService
。Notification
類使用依賴注入的方式接收一個MessageService
實例,這樣它就可以與任何實現了MessageService
接口的服務進行交互,而無需關心具體的服務實現。這使得Notification
類更加靈活和可測試。