依存性注入は、IoC/Serviceコンテナを使用してクラスを解決したり、メソッドを呼び出すときにのみ発生します。自分でメソッドを呼び出すときに引数が必要な場合は、それらの引数を渡す必要があります。 LaravelはPHPの動作を変更しません。それらの特定のクラスが解決されているので、あなたは、コンストラクタの依存関係が注入されます理由がある
$this->anything(); // just a method call
$something->anything(); // just another method call
:彼らは直接法は、オブジェクト上で呼び出し、コンテナを使用していないです、これらの
どれもこれまでの依存性注入を伴わないだろうIoCコンテナを使用します。通常、フレームワークは直接コードではなく、そのようなコードを呼び出します。フレームワークがクラスのメソッドを呼び出すとき、コンテナを使用してそのメソッドを呼び出すことができます。これはメソッド注入が行われる場所です。
コンテナはコメントとcall
方法があります。
「を与えられた閉鎖/クラス@メソッドを呼び出し、その依存関係を注入します。」
サービスプロバイダのboot
メソッドは、IoCコンテナを介して呼び出され、そのメソッドには、サービスプロバイダのLaravelドキュメントに従って依存関係が挿入されます。
"サービスプロバイダのブート方法の依存関係をタイプヒントできます。サービスコンテナは必要な依存関係を自動的に注入します...「 Laravel 5.2 Docs - Service Providers - The Boot method
Illuminate\Foundation\[email protected]
から:
protected function bootProvider(ServiceProvider $provider)
{
if (method_exists($provider, 'boot')) {
return $this->call([$provider, 'boot']);
}
}
アプリケーションを使用すると、メソッドの型ヒントboot
メソッドのパラメータと得ることができる理由である、プロバイダにboot
メソッドを呼び出すためにcall
メソッドを使用しています注入:プロバイダオブジェクト上で直接boot
を呼び出すのではなく、コンテナを使用して呼び出します。
contaiの機能を使用するには容器を使用しなければならない。
- これはLaravel 5.2を参照していますが、IoCはバージョン間で非常に同じです。
この 'setSettings()'メソッドは何を呼びますか? – Hammerbot
同じサービスプロバイダ内の@El_Matella 'Boot()' –
@Aaran McGuireコードを画像http://meta.stackoverflow.com/a/285557/5510499として添付しないでください。 –