Внедрение зависимостей в классе обслуживания Laravel - PullRequest
0 голосов
/ 15 января 2020

В моем приложении Laravel 6.9.0 у меня есть некоторый код, который мне нужно запускать из многих мест, поэтому я работаю над созданием его в качестве слоя службы.

Я создал файл /app/Actions/Music/GetRecentArtists.php и добавил его в мою composer конфигурацию автозагрузки:

<?php

namespace App\Actions\Music;

use \Barryvanveen\Lastfm\Lastfm;

class GetRecentArtists {

    public function get(Lastfm $lastfm)
    {
        return true;
    }

}

Но когда я запускаю его в Tinker, используя:

(new App\Actions\Music\GetRecentArtists())->get()

, я получаю следующую ошибку:

TypeError: Too few arguments to function App/Actions/Music/GetRecentArtists::get(), 0 passed in Psy Shell code on line 1 and exactly 1 expected

Я думал, что внедрение зависимостей внедрит экземпляр Lastfm. Когда я удаляю аргумент функции, он работает нормально.

1 Ответ

0 голосов
/ 16 января 2020

Если вы используете метод resolve, служебный контейнер Laravel должен внедрить для вас зависимость:

resolve('App\Actions\Music\GetRecentArtists')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...