作者crossdunk (推噓自如)
看板PHP
標題[請益] 請問DI跟使用static的差異
時間Wed Dec 27 22:51:43 2017
標題可能說的有點不清楚
請讓我補充一下
最近在學laravel,看到了service及repository的設計方式
其中service依賴注入到了controller,而repository注入到了service
但看了很多有關依賴注入的文章,還是有看沒有懂
想請問DI跟static的差異有哪些地方呢?
如果我在controller直接使用service::method()的話
與
====================================
__construct(service $service)
並$this->service = $service
$this->service->method
===================================
會有什麼差別呢?
小弟目前只想到使用static的話會只使用到該method
用DI的話則會實現整個class
還請各位先進解答了
先謝謝各位先進了!
--
Sent from my 3cm
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.95.163
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1514386307.A.51E.html
→ MOONRAKER: 阿你靜態使用class就不會產生class物件了阿 12/28 11:28
→ MOONRAKER: 這樣就不會執行constructor 要存在service物件裡的資訊 12/28 11:29
→ MOONRAKER: 也沒地方存 差別就像貓毛和整隻貓一樣 12/28 11:30
感謝您,但我想知道還有沒有其他差異 QQ
※ 編輯: crossdunk (203.70.208.163), 12/28/2017 12:28:26
推 Nonegrame: 我的理解是 降低耦合 有用DI 測試時能直接mock掉 class 12/28 20:26
→ crossdunk: hi同事 01/31 17:52