2016-09-21 14 views
2

建物の照明アプリケーションをビルドし、再利用可能でスワップ可能な小さなパッケージを使用して非常に固いエトスでビルドしようとしました。実装のためのバインディングタイプのヒント付きインターフェイス

がつがつ食う要求はすでに私が推測さはPSR \のHttp \メッセージ\ RequestInterfaceを実装しているのでだから私は私のユーザーのリソースコントローラの実装

use GuzzleHttp\Psr7\ServerRequest; 

final class UserController extends ResourceController 
{  
    public function store(ServerRequest $request) 
    { 
     $request = $request->getParsedBody(); 
    } 
} 

use Psr\Http\Message\ServerRequestInterface; 

interface ResourceControllerContract 
{ 
    public function store(ServerRequestInterface $request); 
} 

のような抽象的リソースコントローラのインタフェースを持っていますこれは渡すことができますが、私のアプリケーションはstore()に渡された属性がResourceControllerContractの記述として宣言されるべきであるという例外をスローし続けました

はregisterメソッドの私のサービスプロバイダでは、私はそう

$this->app->bind(
     'Psr\Http\Message\ServerRequestInterface', 
     'GuzzleHttp\Psr7\ServerRequest' 
    ); 

のような結合を作成した。しかし、それはまだ同じエラーをスローし、誰かがここで間違って何が起こっているのか提案することができますか?また、この方法でアプリケーションを構築する私の最初の時間は、私は、単純な見落とし

答えて

0

を逃したのであればUserControllerでの実装はとても

use Psr\Http\Message\ServerRequestInterface; 

final class UserController extends ResourceController 
{  
    public function store(ServerRequest $request) 
    { 
     $request = $request->getParsedBody(); 
    } 
} 

ようになりそしてちょうどGuzzleHttpをバインドするバインディングを残す必要があり、それを考え出した私を許しています\ Psr7 \ ServerRequest Psr \ Http \ Message \ ServerRequestInterface

GuzzleHttp \ Psr7 \ ServerRequestがすでにPsr \ Http \ Message \ ServerRequestInterfaceを実装していても、なぜそれがlaravelサービスプロバイダにバインドされている必要があるか説明できますか?または、関数内でヒントになると、PHPが実装として認識されませんか?

+0

Laravelはそれが存在するかどうか、つまり依存性注入コンテナがそのクラスを注入する方法を知らないので、 – GiamPy

関連する問題