Php 服务容器和构造函数注入之间的区别
据我所知,laravel的服务容器用于依赖注入 我通常通过Php 服务容器和构造函数注入之间的区别,php,laravel,frameworks,Php,Laravel,Frameworks,据我所知,laravel的服务容器用于依赖注入 我通常通过在给定的类中使用ClassName和构造函数来完成这些注入 为什么我要使用服务容器呢 在花了一整天的时间阅读之后,我看不出有什么区别。如果您在控制器构造函数中使用类型暗示依赖项,那么您已经在使用依赖项注入和Laravel服务容器了 有很多关于Laravel服务容器和依赖注入的好文章和文档 我建议: PHP类型暗示并没有特别绑定到依赖项注入,它只是一个PHP特性,由于API反射,它允许使用 除了通过构造函数之外,至少有一件事是不能做的:
在给定的类中使用ClassName
和构造函数来完成这些注入
为什么我要使用服务容器呢
在花了一整天的时间阅读之后,我看不出有什么区别。如果您在控制器构造函数中使用类型暗示依赖项,那么您已经在使用依赖项注入和Laravel服务容器了 有很多关于Laravel服务容器和依赖注入的好文章和文档 我建议:
PHP类型暗示并没有特别绑定到依赖项注入,它只是一个PHP特性,由于API反射,它允许使用 除了通过构造函数之外,至少有一件事是不能做的:上下文绑定 另一个是不能通过构造函数完成的:部分解析(即
app(Test::class,['arg2'=>'Test'])
还请注意,依赖项注入可以在每个方法上工作,而不仅仅是构造函数(例如,app()->调用([$this,'injectedMethod'))
)
最后,您应该阅读此文档,它非常清楚地解释了容器能够实现的所有功能
通过
使用类名
你没有注入任何东西,你只是在做新类名
时帮助PHP找到目标类。在这个上下文中,名称空间与依赖项注入无关。请仔细阅读。@AlexKarshin听起来好像有点困惑。谢谢你指出这一点。我已经阅读了g整天都在谈论服务容器。看起来我没有正确理解依赖注入实际上是什么。谢谢你链接这个问题。这是一个高级的东西,所以你应该花一些时间一步一步地完全理解Laravel服务容器的工作原理