我试图通过依赖注入来获得我班级的实例。 此类具有在app.php
中注册的自己的服务提供者 class Something
{
private $variable;
public function __construct(string $variable)
{
$this->variable = $variable;
}
}
这是服务提供商
class SomethingServiceProvider extends ServiceProvider
{
public function boot()
{
}
public function register()
{
$this->app->singleton('Something', function () {
return new Something( 'test');
});
}
}
当我尝试在控制器中使用这个类实例时......
class TestController extends AppBaseController
{
public function __construct(Something $something)
{
$this->something = $something;
}
...
我收到了错误:
"无法解析的依赖项解析[参数#0 [string $ variable]] 在课堂上的东西 Container-> unresolvablePrimitive(object(ReflectionParameter))in Container.php(第848行)"
答案 0 :(得分:1)
我猜YourServiceProvider::__construct
接受非类型$app
实例。这意味着Laravel无法自动解决它。尝试输入它; public function __construct(Application $app)
使用正确的使用声明。
更多:https://laravel.com/docs/5.3/container#automatic-injection
答案 1 :(得分:0)
当您注册要注入的内容时,您需要使用完全限定的类名:
public function register()
{
$this->app->singleton(Something::class, function () {
return new Something( 'test');
});
}
否则Laravel将尝试自动注入某些内容,这意味着它将首先尝试注入Something
的依赖项,然后确定这是一个字符串并失败。