Поставщик услуг Laravel, не привязанный к контракту

У меня ниже контракта / интерфейса, который привязан поставщиком услуг, однако я становлюсь ниже ошибки:

ReflectionException в строке RouteDependencyResolverTrait.php 81: Приложение класса \ Http \ Controllers \ RocketShipContract не существует

Что я делаю не так ?

контракт

namespace App\Contracts\Helpers; Interface RocketShipContract { public function blastOff(); } 

Конкретный класс

 namespace app\Contracts; use App\Contracts\Helpers\RocketShipContract; class RocketShip implements RocketShipContract { public function blastOff() { return 'Houston, we have ignition'; } } 

Поставщик услуг

 namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Contracts\RocketShip; class RocketShipServiceProvider extends ServiceProvider { protected $defer = true; /** * Bootstrap the application services. * * @return void */ public function boot() { // } /** * Register the application services. * * @return void */ public function register() { $this->app->bind('App\Contracts\Helpers\RocketShipContract', function($app){ return new App\Contracts\RocketShip($app['HttpClient']); }); } /** * Get the services provided by the provider. * * @return array */ public function provides() { return ['App\Contracts\Helpers\RocketShipContract']; } } 

Контроллер

 public function test(RocketShipContract $rocketship) { $boom = $rocketship->blastOff(); return view('test.index', compact('boom')); } 

Ошибка, с которой вы получаете намеки на проблему: класс разрешается в пространстве имен App\Http\Controllers . Это потому, что вам нужно указать полное пространство имен вашего интерфейса в контроллере.

Поэтому либо включите его с use инструкции:

 use App\Contracts\Helpers\RocketShipContract; 

Или введите hint полное пространство имен:

 public function test(App\Contracts\Helpers\RocketShipContract $rocketship) { // ... }