我正在尝试在app/Console/Kernel
中注入一个类(存储库):
public function __construct(LocaleRepository $localeRepository)
{
$this->_localeRepository = $localeRepository;
}
不幸的是,这不起作用,因为我收到以下错误:
PHP Fatal error: Uncaught Illuminate\Contracts\Container\BindingResolutionException: Target [App\Repositories\Interfaces\LocaleRepository] is not instantiable while building [App\Console\Kernel]. in /home/cv/cus/vendor/laravel/framework/src/Illuminate/Container/Container.php:895
我可以毫无问题地在控制器中注入存储库。存储库也在服务提供商中注册:
public function register()
{
$this->app->bind('App\Repositories\Interfaces\LocaleRepository', 'App\Repositories\Implementations\EloquentLocaleRepository');
}
是否可以在app/console/Kernel
类中注入一个类?
答案 0 :(得分:2)
使用app('App\Repositories\Interfaces\LocaleRepository');
以接口方式获取您的界面对象,并且它可以正常工作。
答案 1 :(得分:1)
类app/console/Kernel
在加载应用服务提供者之前进行实例化。
所以,我认为不可能将类注入构造函数中。
但是,您可以使用方法注入。只需将存储库注入您需要的方法即可。
答案 2 :(得分:0)
我通过调用一个单独的方法在register
方法的第一行注入接口来解决这个问题。
在这个单独的方法中,我有以下代码:
$this->_localeRepository = $this->app->make('App\Repositories\Interfaces\LocaleRepository');