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