2016-11-21 4 views
2

Laravelのサービスコンテナには本当に優れた自動注入機能があり、クラスコンストラクタ(何も提供されていなければその依存関係の新しいインスタンスで解決する)に依存関係をタイプヒントすることができます。私はEloquentモデルのコンストラクタでこれを実行しようとしましたが失敗しました。いくつかの検索の後、サービスコンテナによって読み取られる特定のクラスのみが存在することに気付きました。また5.3 docsLaravel 5の自動注入の依存関係をタイプヒントできますか?

によると、重要なのは、単に「型ヒント」コントローラ、イベントリスナー、キュージョブ、ミドルウェア、を含むコンテナによって解決されたクラスのコンストラクタで依存関係をしてもよいですさらに

それは私を不思議に思っています。Laravelでタイプヒントの依存関係があるクラスの完全なリストを知っていますか?

+0

あなたは 'use'で宣言したクラスと正しい名前空間をタイプヒントできるはずです。 –

+0

@AngadDubey多分私は質問をもっと明確にすべきです - 私は具体的に言うと、サービスコンテナが渡されなければコンストラクタ内のクラスの新しいインスタンスをインスタンシエートするタイプのヒントです。 –

+0

@AngadDubey私は先に進み、これをよりよく反映するようにタイトルを更新しました。 –

答えて

1

文章は、フレームワークがIoCコンテナを介して解決するか、IoCコンテナを介してメソッドを呼び出す(メソッドインジェクション)クラスリストの大きな部分です。 「それ以上」は、可能なすべてのタイプのクラスをリストしていないことを意味します。ドキュメントを見ると、特定のタイプのクラスを解決するために使用されているIoCコンテナ/メソッドの呼び出しに言及する他のページがあります。 (例えばアーティザンコマンドとサービスプロバイダ)。あなたが最も関心を持っているものは、対応するページ/セクションで文書化されています。

フレームワークのコンテナコールを外に出すことで、ドキュメント全体からリストを収集することがおそらくそれであると言います。

このクラスのリストは、あなたのコードとフレームワーク自体の間の接合点のようなものです。必要な依存関係を簡単に手に入れるために、これらはコンテナによって解決/呼び出されます。このプロセスは再帰的であるため、これにより解決されたすべてのクラスに対して注入が行われます。一般的に解決について

:それはインターフェースに依存しない場合

任意のクラスは、バインディングなしの容器から解決することができます。

依存関係を注入するには、IoCコンテナを使用して解決/呼び出しを行う必要があります。

依存関係は再帰的に解決されます。

+0

あなたは、ドキュメントの**や**以上は、クラスをサービスコンテナに手動でバインドし、コントローラ、イベント、キュー、およびコマンドが、自動的にタイプヒント付き依存関係注入を実行するボックス? –

+0

私は、誰かがドキュメントを読んでリストをコンパイルすることを期待していましたが、これは適切に答えていると思います。私は完全なリストは、あなたが手動でこのタイプの依存性注入を達成したいものをバインドすることができるという事実のためにあまり有用でなくなると思います。 –

関連する問題