2017-11-20 15 views
-1

ドキュメントのようなインターフェイスに実装をバインドします。しかし、何も動作していないようです。インターフェイスのバインドが機能しません

// In AppServiceProvider::register() 

$this->app->bind(
    'App\Item', 
    'App\Book' 
); 

// In a controller 

public function __construct(Item $x) 
{ 
    // ReflectionException: Class App\Item does not exist 
} 
+0

を使用して、このような行namespace YouNameSpace\ModelName;聖霊降臨祭?たぶんもっと良い解決策があるかもしれません... – juniorgarcia

+2

とにかく、クラス 'Item'と' Book'の名前空間が正しいかどうかを確認してください。また、アプリケーションの 'app'フォルダの中にあるかどうか確認してください。 本当に正しい場合は、ターミナルでプロジェクトディレクトリを開き、 'composer -o -a dumpautoload;を実行してください。 PHPの職人最適化 ' – juniorgarcia

+0

このコマンドは役に立ちました。 – Graduate

答えて

1

表示されるエラーメッセージは、Itemクラスが見つからないことを示しています。 ほとんどの場合、このエラーは名前空間またはクラス名のエラーから発生します。

名前空間がAppかどうかを確認します。コマンドphp artisan app:nameを使用した場合、またはapp.configの名前空間の行を変更した場合は、その名前空間がそのコマンドの名前に変更されるため、変更する必要があります。そのファイルの名前空間を変更したかどうか確認してください

アイテムとブックはモデルですか?それらがYourProjectName/appフォルダ内にあることを確認してください。そうでない場合は、そのディレクトリのサブフォルダ内にあることを確認してください。正しい場合は、App\ItemApp\Bookという行を変更してください。例:

私の名前空間はMyNamespaceです。私のプロジェクトフォルダ内にはappフォルダがあり、appフォルダ内にはModelsというフォルダがあり、そのフォルダ内にモデルブックがあります。 Bookモデルを使用するときは、MyNamespace\Models\Bookで参照する必要があります。

モデルファイルが初期化されているかどうかを確認し、正確にあなたがしたいんどのような私のprevius例namespace MyNamespace\Models\Book;

関連する問題