ホームページ  >  記事  >  PHPフレームワーク  >  Laravel でパイプラインを使用する方法を例を通して学びます

Laravel でパイプラインを使用する方法を例を通して学びます

青灯夜游
青灯夜游転載
2021-10-11 11:09:412017ブラウズ

Laravel のチュートリアル コラムでは、Laravel のパイプラインについて説明し、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

#インターフェイスのコード
    パス
  • app/Pipes/Contracts/Pipe.php

    のコードは次のとおりです。 <pre class="brush:js;toolbar:false;">&lt;?php namespace App\Pipes\Contracts; use Closure; interface PipeContracts { public function handle($body, Closure $next); }</pre>3 つのパイプ クラスのコード

    LeftWords.php
  • のコード
  • <?php
    namespace App\Pipes;
    
    use App\Pipes\Contracts\PipeContracts;
    use Closure;
    
    class LeftWords implements PipeContracts{
        public function handle($body, Closure $next)
        {
            // TODO: Implement handle() method.
    
            $body = &#39;left-&#39;.$body;
    
            return $next($body);
        }
    }

    LeftWords.php<pre class="brush:php;toolbar:false;">&lt;?php namespace App\Pipes; use App\Pipes\Contracts\PipeContracts; use Closure; class RightWords implements PipeContracts{ public function handle($body, Closure $next) { // TODO: Implement handle() method. $body = $body.&amp;#39;-right&amp;#39;; return $next($body); } }</pre> のコード BothSidesWords.php

    <?php
    namespace App\Pipes;
    
    use App\Pipes\Contracts\PipeContracts;
    use Closure;
    
    class BothSidesWords implements PipeContracts{
        public function handle($body, Closure $next)
        {
            // TODO: Implement handle() method.
    
            $body = &#39;[&#39;.$body.&#39;]&#39;;
    
            return $next($body);
        }
    }
    のコードここではパイプを使用しますデフォルトのメソッドハンドル
  • 、メソッド名をカスタマイズできます。次のように処理メソッド名として
myHandleMethod

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

3. 結果の説明

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

User

テーブルには、正常に保存されたデータがあります。 <pre class="brush:php;toolbar:false;">{ &quot;name&quot;: &quot;[left-lisa-right]&quot;, &quot;email&quot;: &quot;3riSrDuBFv@gmail.com&quot;, &quot;updated_at&quot;: &quot;2020-09-05T05:57:14.000000Z&quot;, &quot;created_at&quot;: &quot;2020-09-05T05:57:14.000000Z&quot;, &quot;id&quot;: 15 }</pre>プログラミング関連の知識については、プログラミング ビデオをご覧ください。 !

以上がLaravel でパイプラインを使用する方法を例を通して学びますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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