[請益] 請問LARAVEL中DI跟使用static的差異

看板PHP作者 (推噓自如)時間7年前 (2017/12/27 22:51), 7年前編輯推噓1(104)
留言5則, 3人參與, 6年前最新討論串1/2 (看更多)
標題可能說的有點不清楚 請讓我補充一下 最近在學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

12/28 11:28, 7年前 , 1F
阿你靜態使用class就不會產生class物件了阿
12/28 11:28, 1F

12/28 11:29, 7年前 , 2F
這樣就不會執行constructor 要存在service物件裡的資訊
12/28 11:29, 2F

12/28 11:30, 7年前 , 3F
也沒地方存 差別就像貓毛和整隻貓一樣
12/28 11:30, 3F
感謝您,但我想知道還有沒有其他差異 QQ ※ 編輯: crossdunk (203.70.208.163), 12/28/2017 12:28:26

12/28 20:26, 7年前 , 4F
我的理解是 降低耦合 有用DI 測試時能直接mock掉 class
12/28 20:26, 4F

01/31 17:52, 6年前 , 5F
hi同事
01/31 17:52, 5F
文章代碼(AID): #1QGxE3KU (PHP)
文章代碼(AID): #1QGxE3KU (PHP)