作者gpmm (银色)
看板PHP
标题Re: [请益] 请问LARAVEL中DI跟使用static的差异
时间Fri Dec 29 16:09:23 2017
※ 引述《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://webptt.com/cn.aspx?n=bbs/PHP/M.1514534966.A.50A.html
1F:→ knives: 推最後一句XD 12/30 06:24
2F:→ crossdunk: 了解, 所以我应该善用DI的设计方式,而不是用静态的 12/30 21:24
3F:→ crossdunk: 吗 12/30 21:24
4F:→ gpmm: 这种都是看情境啦,没有什麽一定的道理 XD 12/30 22:47
5F:→ MOONRAKER: 静态方法的支援很有限,等你碰到就会知道了 12/31 11:46
6F:推 banqhsia: 推最後一句XD 不过静态方法就真的是这样不能用 this obj 01/12 00:56