Laravel Facades を読んでいるときにこの引用を思いつきました 、Facade の主な危険はクラス スコープの Creep です
。これは 2 番目の段落です。リンクは https://laravel.com/docs/6.x/facades#when-to-use-facades
クラススコープのクリープこれはどういう意味ですか?
クラススコープのクリープを理解するためのリソースが見つかりません。
P粉9358832922024-03-22 17:53:04
あなたの質問に対する答えは実際には次の文にありますが、Laravel を使い始めるときは非常に混乱することを認めます。だから基本的に: ###
これは、(Laravel に限らず一般的に) ファサードを使いすぎると、コードが肥大化して読みにくくなる可能性があることを意味します。 (ファサードを使用する必要がある理由の背後にある要点を超えています)ファサードは、本来の目的を超えてさまざまなものに進化する可能性があり、
Remodeling Guru (所属なし) が言うように、ファサードは、間違って使用すると、神のオブジェクトになる可能性があります。 p> ファサードを使用するつもりで、その使用方法がまだわからない場合は、
単一責任の原則 を読んで、(前のコメント) 迷った場合はファサードを使用しないことをお勧めします。 ###例###
私は自分の回答を編集して、2 つの異なる方法でのファサードの過剰使用のかなりばかばかしい例を追加しました。
ファサードが依存関係注入パターンの問題を実際に解決してくれることがわかりました。スコープ、静的データ、特性に関するすべてのことを誰が心配したいでしょうか?そこで、あらゆるものにファサードを使い始めます。前のクエリに where を追加する必要がありますか?単純!ルックを作成し、DB::query が取得中です。始まりました 長すぎますか?ファサードはサポートを提供し、
DataModel::longQuery() に入れて、あらゆる場所で使用できます。
ProductResource::collection を常に呼び出すことにうんざりしていませんか?これを
Resource::collection($model) という新しいスキンに置きます。
Payment::generateLink() で使用しましたが、しばらくしてから、サイト内支払いウィジェットのビューも生成する必要があることがわかり、
Payment::view() を追加します。数か月後、支払いプロバイダーは請求書履歴について話し合います。それを
Payment::getReceipts メソッドに追加するだけです。支払いファサードは、あまりにも多くの無関係なものを同じ場所で処理する 1 つの巨大なクラスになりました。