larave5 で独自のサービス プロバイダーを作成します。実行すると、次のエラー メッセージが表示されます: ターゲット [AppIServicesTestServiceInterface] はインスタンス化できません。コード構造は次のとおりです。理由の分析にご協力ください:
サービス関連のインターフェイスを保存するために、アプリ ディレクトリに IServices という名前のディレクトリを作成しました。実装は Services ディレクトリに配置されます。
次に、サービス プロバイダーが Providers ディレクトリに配置されます。
上記の手順が完了したら、app.php にサービスプロバイダーを登録します。
次に、インターフェイスに応じて、HomeController のコンストラクターを通じてそれを注入します。
実行中に、インスタンス化できないエラーが報告されました。
分かりません。なぜインスタンス化できないのでしょうか?このインターフェースはすでに実装しています。そして登録もされていますか?どのキーリンクが間違っていますか?それとも見逃しましたか?誰かが私にアドバイスをくれることを願っています、ありがとう!
曾经蜡笔没有小新2017-05-16 16:58:43
バグ トレースとサービス プロバイダーを投稿して見てください。そうしないと、どんなに優れていても、どこで間違ったのかを推測することはできません。 私の直感では、おそらく app.php に独自のプロバイダーを追加していないのではないかと思われます
巴扎黑2017-05-16 16:58:43
の記述は正しいですが、l4 ではバインドされているインターフェースの実装が何であるかを ioc に伝える必要があります。l5 では bind
メソッドを詳しく見ていないので、それもあるはずです。この方法。そうしないと、laravel は何を注入すればよいのか分からず、自然光のインターフェイスをインスタンス化できません。
App::bind('TestServiceInterface', 'TestService')
PHPz2017-05-16 16:58:43
一度書いただけで問題はなかったのに、なぜプロジェクトの作曲家に再合格したのかわかりません。以前のプロジェクトで学習の過程で何かが変更された可能性があります。エラーがどこにあるのか正確にはわかりませんでした。ごめんなさい
过去多啦不再A梦2017-05-16 16:58:43
お兄さん、不思議ですね~、この問題は解決しましたか?倒れそう