laravel Facades:サービスへの便利なアクセスポイント
LaravelのFacadesは、サービスと対話するための合理化された方法を提供し、ユーザーフレンドリーなインターフェイスを介してアクセスを簡素化します。 当初、ファサードアクセターの方法は混乱しているように見えるかもしれませんが、その役割を理解することはその有用性を明確にします。 ファサードは、Laravelのサービスコンテナ内の基礎となるサービスの便利なプロキシとして機能します。 特定のファサードにリンクされているサービスを見つけることは、getFacadeAccessor()
メソッドのおかげで簡単です。このメソッドは、登録されたサービス名を返します
たとえば、
DB
文字列
// Illuminate\Support\Facades\DB; protected static function getFacadeAccessor() { return 'db'; }
'db'
いくつかのファサードは、メソッドコールをマネージャークラスに委任する場合があり、これは低レベルのマクロまたはデータベース接続クラスと対話します。
指定された接続がないと、
など)にデフォルトです。
Laravelドキュメントでは、ファサード機能に関する包括的な詳細と、利用可能なファサードの完全なリストを提供します。public function __call($method, $parameters) { if (static::hasMacro($method)) { return $this->macroCall($method, $parameters); } return $this->connection()->$method(...$parameters); }
カスタムファサードの作成DatabaseManager
sqlite
名前空間内で作業する場合に特に有益です。 このアプローチは、Laravelの柔軟性と確立された慣習のバランスをとります。
ファサードを生成するには、職人コマンドを使用してください:アプリケーションのサービスプロバイダーで、サービスを定義したと仮定すると、ファサードは次のように実装されます。
代わりに、エイリアスが定義されていない場合、またはサービスプロバイダーで文字列が使用されていない場合は、完全に適格なクラス名を直接使用できます。
AppFacades
ファサードの重要な利点は、テスト中に基礎となるサービスをock笑しやすいことです。
ファサードがないため、Laravelは同様のモッキング機能のための
のような方法を提供します:php artisan make:class App/Facades/Example
AppExampleService
最終的に、ファサードとその他の方法の使用の選択は、個々の好みとプロジェクトのニーズに依存します。 ただし、頻繁にアクセスされるサービスの場合、ファサードは、依存関係の注入の利点を犠牲にすることなく、コードの読みやすさと保守性を大幅に向上させることができます。
以上がLaravelでカスタムファサードを作成する方法を学びますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。