ホームページ  >  に質問  >  本文

ファサードによってもたらされる主な脅威は依然として階級のクリープである

Laravel Facades を読んでいるときにこの引用を思いつきました 、Facade の主な危険はクラス スコープの Creep です 。これは 2 番目の段落です。リンクは https://laravel.com/docs/6.x/facades#when-to-use-facades

です。

クラススコープのクリープこれはどういう意味ですか?

クラススコープのクリープを理解するためのリソースが見つかりません。

P粉155710425P粉155710425235日前326

全員に返信(1)返信します

  • P粉935883292

    P粉9358832922024-03-22 17:53:04

    あなたの質問に対する答えは実際には次の文にありますが、Laravel を使い始めるときは非常に混乱することを認めます。だから基本的に: ###

    これは、(Laravel に限らず一般的に) ファサードを使いすぎると、コードが肥大化して読みにくくなる可能性があることを意味します。 (ファサードを使用する必要がある理由の背後にある要点を超えています)

    ファサードは、本来の目的を超えてさまざまなものに進化する可能性があり、

    Remodeling Guru (所属なし) が言うように、ファサードは、間違って使用すると、神のオブジェクトになる可能性があります。 ファサードを使用するつもりで、その使用方法がまだわからない場合は、

    単一責任の原則 を読んで、(前のコメント) 迷った場合はファサードを使用しないことをお勧めします。 ###例###

    このセクションは実際には「やってはいけない」ガイドであり、「だから、これはやってはいけない!」を簡単に読むためのものです。 』読者の皆さん、これはやめてください!

    私は自分の回答を編集して、2 つの異なる方法でのファサードの過剰使用のかなりばかばかしい例を追加しました。

    ファサードが依存関係注入パターンの問題を実際に解決してくれることがわかりました。スコープ、静的データ、特性に関するすべてのことを誰が心配したいでしょうか?そこで、あらゆるものにファサードを使い始めます。前のクエリに where を追加する必要がありますか?単純!ルックを作成し、
      Scope::where($model, $column, $equals)
    1. という名前を付けます。データベースと通信したいのですが、

      DB::query が取得中です。始まりました 長すぎますか?ファサードはサポートを提供し、DataModel::longQuery() に入れて、あらゆる場所で使用できます。 ProductResource::collection を常に呼び出すことにうんざりしていませんか?これを Resource::collection($model) という新しいスキンに置きます。

      支払いリンクの生成に役立つファサードを追加したので、それを
    2. Payment
    3. と名付け、最初は

      Payment::generateLink() で使用しましたが、しばらくしてから、サイト内支払いウィジェットのビューも生成する必要があることがわかり、Payment::view() を追加します。数か月後、支払いプロバイダーは請求書履歴について話し合います。それを Payment::getReceipts メソッドに追加するだけです。支払いファサードは、あまりにも多くの無関係なものを同じ場所で処理する 1 つの巨大なクラスになりました。

      どちらの例でも、よくあるコーディングの間違いによって Look が過剰に使用されていることがはっきりとわかります。私の例は少し誇張されていますが、これらのことが数か月の間に現実にどのように起こるかを想像するのは簡単だと思います。
    4. 返事
      0
  • キャンセル返事