我在app / services / KDataService.php中创建了一个服务,如下所示:
visibility
在我的一个控制器中,我尝试使用依赖注入模式注入此服务,但是我收到以下错误:
类App \ Services \ KDataService中无法解析的依赖项解析[参数#0 [$ owner]]
我的控制器:
gone
任何人都知道如何通过我的$ owner和$ license?
答案 0 :(得分:3)
问题是您的服务有参数但您没有指定它们。有几种方法可以做到这一点。
使用服务提供商:
namespace App\Providers;
use Riak\Connection;
use Illuminate\Support\ServiceProvider;
class kDataServiceServiceProvider extends ServiceProvider
{
/**
* Register bindings in the container.
*
* @return void
*/
public function register()
{
$this->app->bind(KDataService::class, function ($app) {
return new KDataService(getOwner(), getLicense());
});
}
}
bind
可以更改为其他方法。请参阅Service Container docs。
使用app进行实例:
/* Controller __construct */
$this->kDataService = \App::make(KDataService::class, [getOwner(), getLicense()]);
只需创建类实例
/* Controller __construct */
$this->kDataService = new KDataService(getOwner(), getLicense());
注意:getOwner and getLicense
更改您的逻辑。通常,您可以在控制器内或从$app
。
通常,您需要解决的问题是阅读文档中的服务容器和服务提供商。