ホームページ  >  記事  >  PHPフレームワーク  >  Laravel でパイプを使用して名前を処理し、統一された処理を実現する

Laravel でパイプを使用して名前を処理し、統一された処理を実現する

藏色散人
藏色散人転載
2020-09-08 09:17:432318ブラウズ

以下は、Laravel でのパイプの使用例を共有するチュートリアルのコラムです。困っている友人に役立つことを願っています。

コードの観点からパイプラインの実際の使用法を紹介します。パイプラインに関する情報はインターネット上にたくさんありますので、ご自身で調べてください。

このブログでは、パイプラインを使用して名前を処理し、統一処理を実現します。 Laravel でパイプを使用して名前を処理し、統一された処理を実現する

背景:

現在、パイプラインの使用法に関する入門書は数多くありますが、そのほとんどは導入とガイダンスにとどまっており、実際にコードの奥深くまで踏み込んだ部分はあまりありません。 。はじめにによると、パイプラインの使用にはいくつかの障害があるとのことですが、参考までに、パイプラインの使用に関する詳細なコード例を以下に示します。
この紹介は私が実際に使用した処理のコードを抜粋したもので、私自身がテストして実際に使用することができます。注目を集めるためだけに、気に入らない場合は批判しないでください。



1. コントローラー

ルーター部分
Route::get('/pipe', ['as'=>'pipe', 'uses'=>'PipeController@index']);
制御コード

<?php

namespace App\Http\Controllers;

use App\Pipes\LeftWords;
use App\Pipes\RightWords;
use App\Pipes\BothSidesWords;
use Illuminate\Http\Request;
use Illuminate\Pipeline\Pipeline;
use App\User;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Hash;

class PipeController extends Controller
{
    /* 定义管道
     *
     * 第一步处理
     * 第二部处理
     * 第三部处理
     * */
    protected $pipes = [
        LeftWords::class,
        RightWords::class,
        BothSidesWords::class,
    ];
    // 首页
    public function index(Request $request){
        $name = $request->input(&#39;name&#39;);
        // $name = Str::random(10);

        return app(Pipeline::class)
            ->send($name)
            ->through($this->pipes)
            ->then(function ($content) {
                return User::create([
                    &#39;name&#39; => $content,
                    &#39;email&#39;=>Str::random(10).&#39;@gmail.com&#39;,
                    &#39;password&#39;=>Hash::make(&#39;password&#39;),
                ]);
            });
    }
}

2. パイプライン部分

ディレクトリ構造は次のとおりです。

├─app
│  │  User.php
│  ├─Http
│  │  ...│  │
│  ├─Models
│  │  ...│  │
│  ├─Pipes
│  │  │  BothSidesWords.php
│  │  │  LeftWords.php
│  │  │  RightWords.php
│  │  │
│  │  └─Contracts
│  │          PipeContracts.php

interface
    code
  • パス

    app/Pipes/Contracts/Pipe.php にあるコード
    <pre class="brush:php;toolbar:false;"> &lt;?php namespace App\Pipes\Contracts; use Closure; interface PipeContracts { public function handle($body, Closure $next); }</pre>

  • 3 つのパイプ クラスのコード
    LeftWords.php
  • コード


    <pre class="brush:php;toolbar:false">  e2e3658ec482d41ddea73862440626c8send($name)         -&gt;through($this-&gt;pipes)         -&gt;via('myHandleMethod')         -&gt;then(function ($content) {             return User::create([                 'name' =&gt; $content,                 'email'=&gt;Str::random(10).'@gmail.com',                 'password'=&gt;Hash::make('password'),             ]);         });</pre>このように定義したら、interface を変更し、同時に実装クラスも変更します。

    3. 結果の説明

    http://localhost/pipe?name=lisa にアクセスすると、取得された結果が正常に出力されます。

    User

    テーブルには、正常に保存されたデータがあります。 rree

以上がLaravel でパイプを使用して名前を処理し、統一された処理を実現するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。