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

看板PHP作者 (銀色)時間7年前 (2017/12/29 16:09), 編輯推噓1(105)
留言6則, 5人參與, 8年前最新討論串2/2 (看更多)
※ 引述《crossdunk (推噓自如)》之銘言: : 標題可能說的有點不清楚 : 請讓我補充一下 : 最近在學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 : 還請各位先進解答了 : 先謝謝各位先進了! DI 和 static 完全兩碼事啊… 你翻 wiki 比較快 https://goo.gl/Pbtmqb 簡單來說,DI 就是一種降耦合的手法,你可以在不偏離軸心物件的使用上, 透過 DI 取得各式各樣的能力。 換言之,也可以將原本肥大的單一物件拆成核心物件和 service provider, 大概有點像是…洛克人和他愉快的武器系統們的關係? XD 至於 static,不就是個躲在 class 裡以為自己是獨立 function 的傢伙嗎… XD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.15.21.184 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1514534966.A.50A.html

12/30 06:24, 7年前 , 1F
推最後一句XD
12/30 06:24, 1F

12/30 21:24, 7年前 , 2F
了解, 所以我應該善用DI的設計方式,而不是用靜態的
12/30 21:24, 2F

12/30 21:24, 7年前 , 3F
12/30 21:24, 3F

12/30 22:47, 7年前 , 4F
這種都是看情境啦,沒有什麼一定的道理 XD
12/30 22:47, 4F

12/31 11:46, 7年前 , 5F
靜態方法的支援很有限,等你碰到就會知道了
12/31 11:46, 5F

01/12 00:56, 8年前 , 6F
推最後一句XD 不過靜態方法就真的是這樣不能用 this obj
01/12 00:56, 6F
文章代碼(AID): #1QHVWsKA (PHP)
文章代碼(AID): #1QHVWsKA (PHP)