服务容器?
0

简单分享下个人对laravel服务容器的理解。

服务容器是一个超级工厂,用来生成一个指定的类,主要解决实例化类时的依赖注入问题,核心功能包括 bind函数和make函数
bind函数的作用:用来描述指定的类需要的依赖,就是告诉工厂这个类要怎么做出来。
make函数的作用:实例化一个类。

自动依赖:
自动依赖就是超级工厂本身可以解析出这个类的依赖接口,不需要传入任何关于依赖的描述,也就是不需要进行bind操作。
laravel服务容器使用了反射类解析一个指定的类的结构,可以自动注入一个指定的类依赖。(文档的自动依赖部分,个人觉得这部分才是服务容器的核心功能,也应该是最常使用的功能,文档排版可以放在第一个比较好。)
直接make,服务容器实现了数组接口,也可以使用$app['全类名']调用make

接口依赖:
接口作为一段约束性协议代码,不能直接使用,如果某个类的依赖是一种接口,那么自动依赖就不可行了,因为反射类不能确定到底是要实例化哪个实现了这种接口类注入到我们需要生成的类中,所以,这时候需要使用bind操作指定如果注入的是一个接口,那么我们需要实例化哪个类作为注入(见文档的绑定接口实现)。

超级工厂原理级使用:简单绑定
传入了一个全类名和一个闭包,这个闭包描述了如何实例化这个类,工厂会去调用这个闭包去实例化这个类。

singleton绑定:
使用这种描述绑定的类,只实例化一次,以后使用到这种类时,无论是用来注入还是直接使用,都会去调用第一次实例化的那个类。

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

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!