laravel では、ファサードはアプリケーション サービス コンテナ内のバインディング クラスに提供される「静的」インターフェイスです。メンテナンス中にテストが容易で、より柔軟で、簡潔で洗練された構文を提供できます。すべてのファサードは、「Illuminate\Support\Facades」名前空間で定義されます。
#この記事の動作環境: Windows 10 システム、Laravel バージョン 6、Dell G3 コンピューター。
Facadesは、アプリケーションサービスコンテナ内のクラスをバインドするための「静的」インターフェースを提供します。
Laravel には多くの組み込みファサードがあり、Laravel のほとんどの機能にアクセスできます。
Laravel のファサードは、サービス コンテナ内の基礎となるクラスの "静的プロキシ" として機能します。従来の静的メソッドと比較して、メンテナンス中にテストが容易で、より柔軟で、簡潔で洗練された構文を提供できます。
すべての Laravel ファサードは、Illuminate\Support\Facades 名前空間で定義されます。
ファサードには簡単にアクセスできます:
use Illuminate\Support\Facades\Cache; Route::get('/cache', function () { return Cache::get('key'); });
Laravel ドキュメント全体を通じて、多くの例がファサードを使用してフレームワークのさまざまな機能を示しています。
ファサードを使用する場合
ファサードには多くの利点があり、シンプルで覚えやすい構文を提供するため、長いクラスを覚えなくてもファサードを使用できるようになります。さらに、Laravel が提供する機能的特徴により、PHP 動的メソッドを独自に使用するため、テストが容易になります。
ファサードを使用する場合、特別な注意が必要な場所がいくつかあります。
ファサードを使用する主なリスクは、クラスの範囲が拡大してしまうことです。
ファサードは非常に使いやすく、注入の必要がないため、単一クラスで誤って多くのファサードを使用してしまい、クラスがどんどん大きくなってしまいます。
依存性注入を使用する場合、使用するクラスが増えるほどコンストラクターが長くなり、視覚的に注目を集め、このクラスが少し巨大であることがわかります。したがって、Facade を使用する場合は、クラスのスコープを短く保つためにクラスのサイズの制御に特に注意してください。
Laravel と対話するサードパーティの拡張機能パッケージを開発する場合は、クラスを使用するために Facade を使用するのではなく、Laravel コントラクトを挿入することをお勧めします。拡張機能は Laravel 自体の外部で構築されるため、Laravel Facade を使用してヘルパー関数をテストすることはできません。
ファサードと依存関係注入
依存関係注入の主な利点の 1 つは、注入されたクラスの実装を切り替えることができることです。これは、モックまたはスタブを挿入し、スタブで呼び出されるさまざまなメソッドをアサートできるため、テスト時に役立ちます。
通常、真に静的なメソッドはモック化またはスタブ化できません。ただし、ファサードは動的メソッドを使用してサービス コンテナから解決されたオブジェクトのメソッド呼び出しをプロキシするため、挿入されたクラス インスタンスをテストするのと同じようにファサードをテストできます。たとえば、次のルートのようになります。
use Illuminate\Support\Facades\Cache; Route::get('/cache', function () { return Cache::get('key'); })
このようなテストを作成して、Cache::get メソッドが予想どおりに呼び出されることを確認できます。
use Illuminate\Support\Facades\Cache; /** * 一个基础功能的测试用例。 * * @return void */ public function testBasicExample() { Cache::shouldReceive('get') ->with('key') ->andReturn('value'); $this->visit('/cache') ->see('value'); }
[関連する推奨事項: laravel ビデオチュートリアル ]
以上がlaravelファサードとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。