Route::method()
を使用すると、「ファサード」と呼ばれるものを使用しています。このコンテキストでは、Route
クラスがファサードです。
Illuminate\Support\Facades\Route
を見ると、文字列router
を返すという1つの静的メソッドが用意されています。これは、IoCコンテナのIlluminate\Routing\Router
クラスのインスタンスを参照するこの文字列です。
セットアップ中に、Laravelはこのクラスのインスタンスを作成し、router
という種類のキーとして保存します。
Route::get(...)
を実行すると、Loodleはファサードアクセサを使用して既に作成されているルータクラスのインスタンスを見つけ、get
メソッドを呼び出します。動的プログラミングを使用してこれを実現します。詳細はIlluminate\Support\Facades\Facade
クラスを参照してください。具体的には、__callStatic
メソッドがすべて開始されます。だから、
、Route::get()
を呼び出す:
- あなたが実際にそのような方法は、そのクラスに存在しない、またはそれを拡張する
Facade
クラス、そう__callStatic
メソッドが実行されるIlluminate\Support\Facades\Route::get
- を呼んでいます。
- 基礎となる
Facade
クラスは$instance
がルータのインスタンスであり、かつ$method
はget
と$args
であることは何ですあなたがロジックに従うならば、あなたにIlluminate\Routing\Router
- のインスタンスを取得します。最後に、
__callStatic
方法は$instance->$method(...$args);
を呼び出しstatic::getFacadeRoot()
を呼び出しますRoute::get(...);
Route::get('route', '[email protected]');
に電話すると、Illuminate\Routing\Router
のインスタンスで実際にget('route', '[email protected]')
と呼ぶことになります。実際に静的メソッドを呼び出すのではないことに注意してください。
これは、ソースを慎重に調べることなく最初にユーザーを確認するのはすぐにはわかりませんが、フレームワーク全体で使用されている概念であり、ファサードに再:)] – tam5