如何理解以及正确的使用 Service Provider?

Service Provider 的概念是向 IoC 容器注册特定的服务,当需要某个服务的时候可以直接从 IoC 容器中获取服务实例使用。

比起使用命名空间,Service Provider 的优势是什么?

是依赖注入么?根据自己在 Laravel5上的实验,使用 use app/Repositories 这种命名空间方式,Laravel5 同样可以实现对于方法的依赖注入。

想到一点优势是服务代理与服务实例分离,当想要替换服务实现的时候,可以简单的通过 ServiceProvider 进行修改,而不用像命名空间一样每个文件一一替换。
还有可以依据参数动态绑定服务实现。

除了以上两点以外,Service Provider 还有哪些优势?应该在什么样的需求下使用 Service Provider?

3ks

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 9

我觉得serviceProvider应该是一个封闭的“服务” 如字面意思,一个页面服务,会有MVC,包括服务特定的表,服务特定的页面,服务特定的逻辑。 比如官方的AuthServiceProvider,就是有用户表,登录页面,注册登录等页面。太小粒度的ServiceProvider是没有必要的。

9年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!