Inversion_of_control.md
Translated by ChatGTP
控制反轉
為什麼要使用
減少相依性。以我自己的經驗來說,當需要更改已被用在多處的類別時,很容易出問題。例如,當模型更改或是簡訊服務更改時。
Laravel 解決方案
- 介面綁定 - 在服務提供者中註冊容器。
$app->make('name')
- 依賴注入
- 將實例作為參數傳入,而非在類別中初始化。
其他解決方案但不建議使用
- 使用常數
- 我認為這種方式不好是因為它仍具有相依性,且此值只能用於此類別。
- 在建構函式中註冊
- 如果需要修改,就必須更改類別程式碼,且如果這個類別是一個庫,那麼這種操作就不是很好。