gpt4 book ai didi

php - 将 Artisan 注入(inject) Service 类

转载 作者:行者123 更新时间:2023-12-03 22:58:40 27 4
gpt4 key购买 nike

我正在尝试将 Artisan 注入(inject)到服务中,这样我就可以避免使用外观。查看外观类引用,我可以看到我应该注入(inject)的类是:

Illuminate\Console\Application

所以我假设这样做:

<?php

namespace App\Service;

use Illuminate\Console\Application;

class DummyDataService
{
/**
* @var Application
*/
private $application;

public function __construct(
Application $application
) {
$this->application = $application;
}

public function insertDummyData()
{
$this->application->call('db:seed', [
'--class' => 'DummyDataSeeder'
]);
}
}

...会起作用。但是,我收到以下错误:

BindingResolutionException in Container.php line 824:
Unresolvable dependency resolving [Parameter #2 [ <required> $version ]] in class Illuminate\Console\Application

如果我像这样调用外观上的方法,它就会起作用:

Artisan::call('db:seed', [
'--class' => 'DummyDataSeeder'
]);

到目前为止我还无法弄清楚问题出在哪里。有没有人遇到过类似的问题?我尽量避免使用正面。

提前致谢。

最佳答案

您应该注入(inject) Illuminate\Console\Kernel 而不是 Illuminate\Console\Application 来实现您想要的,因此您的类应如下所示:

<?php

namespace App\Service;

use Illuminate\Contracts\Console\Kernel;

class DummyDataService
{
private $kernel;

public function __construct(Kernel $kernel)
{
$this->kernel = $kernel;
}

public function insertDummyData()
{
$this->kernel->call('db:seed', [
'--class' => 'DummyDataSeeder'
]);
}
}

关于php - 将 Artisan 注入(inject) Service 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875166/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com