Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 服务容器和构造函数注入之间的区别_Php_Laravel_Frameworks - Fatal编程技术网

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

Php 服务容器和构造函数注入之间的区别,php,laravel,frameworks,Php,Laravel,Frameworks,据我所知,laravel的服务容器用于依赖注入 我通常通过在给定的类中使用ClassName和构造函数来完成这些注入 为什么我要使用服务容器呢 在花了一整天的时间阅读之后,我看不出有什么区别。如果您在控制器构造函数中使用类型暗示依赖项,那么您已经在使用依赖项注入和Laravel服务容器了 有很多关于Laravel服务容器和依赖注入的好文章和文档 我建议: PHP类型暗示并没有特别绑定到依赖项注入,它只是一个PHP特性,由于API反射,它允许使用 除了通过构造函数之外,至少有一件事是不能做的:

据我所知,laravel的服务容器用于依赖注入

我通常通过
在给定的类中使用ClassName
和构造函数来完成这些注入

为什么我要使用服务容器呢


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

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

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

我建议:


PHP类型暗示并没有特别绑定到依赖项注入,它只是一个PHP特性,由于API反射,它允许使用

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

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

还请注意,依赖项注入可以在每个方法上工作,而不仅仅是构造函数(例如,
app()->调用([$this,'injectedMethod'))

最后,您应该阅读此文档,它非常清楚地解释了容器能够实现的所有功能


通过
使用类名
你没有注入任何东西,你只是在做
新类名
时帮助PHP找到目标类。在这个上下文中,名称空间与依赖项注入无关。请仔细阅读。@AlexKarshin听起来好像有点困惑。谢谢你指出这一点。我已经阅读了g整天都在谈论服务容器。看起来我没有正确理解依赖注入实际上是什么。谢谢你链接这个问题。这是一个高级的东西,所以你应该花一些时间一步一步地完全理解Laravel服务容器的工作原理