据我了解,laravel的服务容器用于依赖注入。
我通常通过给定类中的use ClassName
和构造函数进行这些注入。
为什么我要改用服务容器?
在花了一整天的时间阅读它之后,我看不出有什么区别。
如果您在控制器构造函数中键入提示依赖项,那么您已经在使用依赖项注入和 Laravel 服务容器。
有很多关于Laravel服务容器和依赖注入的好文章和文档。
我推荐这些:
另一个堆栈溢出问题
拉拉维尔文档服务容器
拉拉维尔文档依赖注入
PHP类型提示并没有专门绑定到依赖注入,它只是一个 PHP 功能,由于 API 反射,它允许它。
除了通过构造函数之外,至少有一件事你不能做:上下文绑定。
另一个不能通过构造函数完成的:部分分辨率(即app(Test::class, ['arg2' => 'test'])
另请注意,依赖注入可以适用于每个方法,而不仅仅是构造函数(例如app()->call([$this, 'injectedMethod'])
(
最后,您应该阅读此文档,其中非常清楚地解释了容器能够做到的所有内容。
https://gist.github.com/davejamesmiller/bd857d9b0ac895df7604dd2e63b23afe