Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel服务提供商不受合同约束_Php_Laravel_Laravel 5.1 - Fatal编程技术网

Php Laravel服务提供商不受合同约束

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

我有以下由服务提供商绑定的合同/接口,但我得到以下错误:

RoutedPendencySolvertRait.php第81行中的ReflectionException: 类App\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'));
    }
控制器

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
数组中?