服务容器?

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

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

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

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

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

@wythe00 谢谢你写了这一段!
这一章我看不懂,请问学长们,要看懂这一章,需要什么基础知识呢?

4年前 评论

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