Laravelフレームワークのパイプライン設計パターンにおけるミドルウェアの基本的な動作原理

不言
リリース: 2018-07-31 10:07:59
オリジナル
3433 人が閲覧しました

laravelフレームワークのパイプライン設計パターンは、データがパイプラインに転送されて処理され、次のステップに渡されることを意味します。 次に、 のパイプライン設計パターンミドルウェアの基本的な動作原理を見てみましょう。 laravelフレームワーク。

いわゆるパイプライン設計パターンは、データをタスク シーケンスに渡し、データが処理されて次のステップに渡される組立ラインの役割を果たします。

パイプラインを使用すると、特に単一タスクで複雑な処理コードを記述する場合に非常に便利になり、パイプライン内でステージ タスクを簡単に追加、削除、置換できます。

Laravel はフレームワーク内の多くの場所でパイプライン設計パターンを使用します。これは、パイプライン設計パターンを実装する必要があるすべての場所がすでに基礎となるアプリケーションの一部であることを意味します。

Laravel の内部コンポーネントを使用して、フレームワーク上に独自の機能を構築できます。今日のチュートリアルでは、パイプラインの設計パターンと、Laravel の内部パイプラインの使用方法について説明します。

パイプライン設計パターンとは何ですか?

パイプライン パターンは、複雑なプロセスを複数の独立したサブタスクに分割するために使用されます。それぞれの独立したタスクは再利用可能なため、これらのタスクを複雑なプロセスに組み合わせることができます。

このモードでは、巨大なプロセスを小さなサブタスクに分割し、データを処理し、処理された結果を次のサブタスクに渡すことができます。まるで組み立てラインのように、原料の加工から完成品までが整然と完成しています。

パイプライン内の各タスクは同じタイプのデータを受け入れて返すため、他のサブタスクに影響を与えることなく、パイプライン内でサブタスクを追加、削除、または置換できます。

Unix システムに精通している場合は、パイプについてもよく知っているかもしれません。次のようなシェル コマンドでパイプ コマンドをよく使用するためです。

cat helloworld.txt | grep "hello world" | rev | > output.txt
ログイン後にコピー

この例では、ファイルのコンテンツを読み取り、その中の文字をクエリします。 hello world」を入力し、文字列を反転して、最後にoutput.txtファイルに追加します。

Laravel でパイプライン モードを使用するにはどうすればよいですか?

Laravel はフレームワーク内の多くの場所でパイプライン設計パターンを使用します。最も一般的なのはミドルウェアの実装です。

リクエストが最終的にコントローラーのアクションに到達して処理されると、最初に一連のミドルウェアを通過します。各仲介者は、Cookie の設定、ログインするかどうかの決定、CSRF 攻撃の防止など、独立した責任を負います。

リクエストは各段階で処理され、パスした場合は次の処理に渡され、対応するHTTPレスポンスが返されます。

このメカニズムにより、リクエストが最終的にアプリケーション コードに到達する前に、処理オペレーションを簡単に追加できます。もちろん、この処理オペレーションが必要ない場合は、リクエストのライフサイクルに影響を与えることなく、いつでも削除することもできます。

パイプライン モードの利点

パイプライン モードには多くの利点があります:

まず、複雑な処理フローを独立したサブタスクに分解して、各サブタスクのテストを容易にします。

次に、分解されたサブタスクを異なる処理プロセスにすることができます。コードの冗長性を避けるために再利用されます。

最後に、既存のプロセスに影響を与えることなく、複雑なプロセスのサブタスクを追加、削除、置換することが非常に簡単です。

パイプライン モードの欠点

もちろん、パイプライン モードにも欠点があります。

各サブタスクは単純になりますが、これらのサブタスクを再度完全なプロセスに結合しようとすると、ある程度の複雑さが生じます。さらに、独立したサブタスクのテストに合格した後、プロセス全体が正常に動作することを確認する必要もありますが、これにはある程度の不確実性があります。

最後に、表示されているのがサブタスクだけである場合、全体のプロセスを理解することが難しくなります (視覚障害者が象に触れる話は誰にとってもよく知られているはずですが、これが理由です)。

Laravel のパイプラインの使用方法

Laravel が提供するパイプラインの使用は非常に簡単です。まず、新しい IlluminatePipelinePipeline オブジェクトを作成し、それを IlluminateContractsContainerContainer のインスタンスに注入する必要があります。

$pipeline = app('Illuminate\Pipeline\Pipeline');
ログイン後にコピー

次に、必要なものを渡します。オブジェクトはこのパイプを送信します:

$pipeline->send($request);
ログイン後にコピー

次に、リクエストを受け入れて処理するタスクの配列に渡します:

$pipeline->through($middleware);
ログイン後にコピー

最後にパイプライン タスクを実行し、コールバック ハンドラーを書き込みます:

$pipeline->then(function ($request) {
    // Do something
});
ログイン後にコピー

これがミドルウェアの基本的な動作方法です: HTTP を受け取りますrequest、lets リクエストは、定義されたルーティング ミドルウェアを通過し、最終的に処理の宛先に到達します。

結論

ミドルウェアは、Laravel が提供するパイプラインを独自のフレームワークで最大限に活用する特別な例にすぎません。プロジェクト。

上記がこの記事の全内容です。詳細については、

laravel

チュートリアルをご覧ください。
おすすめ関連記事:

Laravel 環境セットアップ: Laravel を Alibaba Cloud または Tencent Cloud にデプロイする手順

推奨コース:

2017 年に推奨される最新の Laravel ビデオ チュートリアル 5 つ

以上がLaravelフレームワークのパイプライン設計パターンにおけるミドルウェアの基本的な動作原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!