Я пытаюсь ввести Artisan в сервис, поэтому я могу избежать использования фасада. Глядя на ссылках класса фасада я могу видеть, что класс я должен быть инъекционным является:Injecting Artisan in Service класс
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'
]);
Я не могу понять, что эта проблема до сих пор. Кто-нибудь сталкивался с подобными проблемами? Я стараюсь избегать фасадов там, где это возможно.
Заранее спасибо.
Удивительно, это работает, поэтому я отметил правильный ответ. Спасибо за вашу помощь. – Steven1978
Просто хотел проследить и сказать, что не только это решение работает, но и является полностью правильной ссылкой. Документы были фактически неправильными. Я исправил их в PR, который с тех пор был объединен, поэтому теперь все должно быть правильно для будущих людей, которые проверяют. –