Laravel умеет сам из коробки подставлять параметры, тем самым создавая объект. Например при вызове команды IndexNewPositionCommand он сам создаст PositionIndexer(//1).
Подскажите, можно ли как-то передать передавать в класс 1 объект, а второй чтобы сам создавался, а то слишком много придётся самому прописать вот этих зависимостей? Куда копать, где чего читать?
use App\Services\Search\PositionIndexer;
use Illuminate\Console\Command;
class IndexNewPositionCommand extends Command
{
//1
public function __construct(PositionIndexer $indexer) {
parent::__construct();
}
//2
//public function __construct(Position $position, PositionIndexer $indexer) {
parent::__construct();
}
}
use Elasticsearch\Client;
class PositionIndexer
{
private $client;
public function __construct(Client $client){
$this->client = $client;
}
}
// Хочется передавать $position, а второй параметр, чтобы сам вычислялся и создавался...
$position = Position::findOrFail(1);
$dispatcher->dispatch(new IndexNewPosition($position, new PositionIndexer(new Elasticsearch\Client(итутещёкучавсего))));
Решение$indexer = resolve('App\Services\Search\PositionIndexer');