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

作者: crossdunk (推噓自如)   2017-12-27 22:51:43
標題可能說的有點不清楚
請讓我補充一下
最近在學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
還請各位先進解答了
先謝謝各位先進了!
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-12-28 11:28:00
阿你靜態使用class就不會產生class物件了阿這樣就不會執行constructor 要存在service物件裡的資訊也沒地方存 差別就像貓毛和整隻貓一樣
作者: Nonegrame (程式寫得好,好人做到老)   2017-12-28 20:26:00
我的理解是 降低耦合 有用DI 測試時能直接mock掉 class

Links booklink

Contact Us: admin [ a t ] ucptt.com