服务容器和构造函数注入之间的区别



据我了解,laravel的服务容器用于依赖注入。

我通常通过给定类中的use ClassName和构造函数进行这些注入。

为什么我要改用服务容器?

在花了一整天的时间阅读它之后,我看不出有什么区别。

如果您在控制器构造函数中键入提示依赖项,那么您已经在使用依赖项注入和 Laravel 服务容器。

有很多关于Laravel服务容器和依赖注入的好文章和文档。

我推荐这些:

另一个堆栈溢出问题

拉拉维尔文档服务容器

拉拉维尔文档依赖注入

PHP类型提示并没有专门绑定到依赖注入,它只是一个 PHP 功能,由于 API 反射,它允许它。

除了通过构造函数之外,至少有一件事你不能做:上下文绑定。

另一个不能通过构造函数完成的:部分分辨率(即app(Test::class, ['arg2' => 'test'])

另请注意,依赖注入可以适用于每个方法,而不仅仅是构造函数(例如app()->call([$this, 'injectedMethod'])(

最后,您应该阅读此文档,其中非常清楚地解释了容器能够做到的所有内容。

https://gist.github.com/davejamesmiller/bd857d9b0ac895df7604dd2e63b23afe

最新更新