Php Laravel服务提供商不受合同约束
我有以下由服务提供商绑定的合同/接口,但我得到以下错误: RoutedPendencySolvertRait.php第81行中的ReflectionException: 类App\Http\Controllers\RocketShipContract不存在 我做错了什么 合同Php Laravel服务提供商不受合同约束,php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,我有以下由服务提供商绑定的合同/接口,但我得到以下错误: RoutedPendencySolvertRait.php第81行中的ReflectionException: 类App\Http\Controllers\RocketShipContract不存在 我做错了什么 合同 namespace App\Contracts\Helpers; Interface RocketShipContract { public function blastOff(); } 混凝土类 nam
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'));
}
控制器
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;
或键入完整命名空间的提示:
public function test(App\Contracts\Helpers\RocketShipContract $rocketship)
{
// ...
}
接口现在被称为i,但是现在我得到这个错误
Target[App\Helpers\Contracts\RocketShipContract]不可实例化。
你的RocketShipServiceProvider
是否添加到config/App.php
中的providers
数组中?