Контекстная привязка в Laravel - PullRequest
0 голосов
/ 21 ноября 2019

После документа Laravel я хочу привязать реализацию TransferToInventory, которая реализует интерфейс Processable к определенному классу (Handler).

Обрабатываемыйинтерфейс

interface Processable
{
    public function process(array $data);
}

Класс TransferToInventory

class TransferToInventory implements Processable
{
    public function process(array $data): void
    {
        dd($data);
    }
}

Обработчик

class Handler
{
    protected $data;
    protected $processor;

    /**
     * This is incoming JSON payload, already decoded to an array
     *   - var_dump($data);
     *
     * Raw JSON payload from SQS, if necessary
     *   - var_dump($job->getRawBody());
     *
     * @param  Job   $job
     * @param  array $data
     */
    public function handle(Job $job, array $data)
    {
        resolve(Processorable::class)->process($data);
    }
}

Я ставлю привязки зависимостейв AppServiceProvider.

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->when(Handler::class)
            ->needs(Processable::class)
            ->give(function () {
                return new TransferToInventory;
            });
    }

    public function boot()
    {
        //
    }
}

Но я всегда получаю следующую ошибку.

local.ERROR: Цель [App \ Services \ Contract \ Processable] не может быть создана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...