是因为Laravel 6版本之前的容器绑定方式发生了变化。在Laravel 6之前,我们可以通过在控制器的构造函数中声明依赖关系来实现依赖注入。例如,我们可以在构造函数中声明一个需要使用的服务,然后Laravel会自动解析并注入该服务。
然而,在Laravel 6中,容器绑定的方式发生了改变。现在,我们需要使用Laravel的容器实例来手动解析依赖关系。下面是在Laravel 6中解决依赖注入问题的步骤:
app()
函数来获取容器实例。make()
方法来解析依赖关系。该方法接受一个类名作为参数,并返回一个已解析的实例。下面是一个示例代码,演示了如何在Laravel 6中手动解析依赖关系:
use App\Services\SomeService;
class SomeController extends Controller
{
protected $someService;
public function __construct()
{
$this->someService = app()->make(SomeService::class);
}
public function index()
{
// 使用解析后的依赖关系
$this->someService->doSomething();
}
}
在上面的示例中,我们使用app()->make()
方法手动解析了SomeService
类的实例,并将其赋值给$someService
属性。然后,我们可以在控制器的其他方法中使用$someService
来调用相关的方法。
需要注意的是,在Laravel 6中,我们也可以使用app()
函数来解析依赖关系,而不是在构造函数中声明属性。这取决于个人的编码风格和项目需求。
总结起来,Laravel 6中不能使用依赖注入的原因是容器绑定方式发生了变化。为了解决这个问题,我们可以使用Laravel的容器实例来手动解析依赖关系。
领取专属 10元无门槛券
手把手带您无忧上云