Я использую Laravel-5.0 по умолчанию Authentication
Middleware, но я изменил подпись функции ручки иметь:Laravel Dependency Injection в Middleware
public function handle($request, Closure $next, AuthClientInterface $authClient)
Я также зарегистрировал AuthClientInterface
в поставщика услуг с:
public function register()
{
$this->app->bind('App\Services\Contracts\AuthClientInterface', function()
{
return new AuthClient(
env('AUTH_SERVER_URL'),
env('AUTH_SESSION_URL'),
env('AUTH_CLIENT_ID')
);
});
}
Однако, несмотря на это, я вижу следующее сообщение об ошибке:
Argument 3 passed to HelioQuote\Http\Middleware\Authenticate::handle()
must be an instance of
HelioQuote\Services\Contracts\HelioAuthClientInterface, none given,
called in C:\MyApp\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php on line 125 and defined...
Может ли кто-нибудь увидеть, что я делаю неправильно?
EDIT: Я получил его, передав HelioAuthClientInterface в конструктор промежуточного программного обеспечения. Однако я думал, что контейнер IoC также будет добавлять зависимость к методам в дополнение к конструктору.
OP может использовать контейнер IoC для разрешения реализации из абстракции. App :: make() - ваш друг в этом случае. – Burimi
@Burimi это довольно сложно, я думаю, что использование функций конструкции достаточно ясно для этого использования – tucq88