Rumah  >  Artikel  >  rangka kerja php  >  Ketahui cara menggunakan saluran paip dalam Laravel melalui contoh

Ketahui cara menggunakan saluran paip dalam Laravel melalui contoh

青灯夜游
青灯夜游ke hadapan
2021-10-11 11:09:412056semak imbas

Lajur tutorial Laravel akan membawa anda melalui saluran paip dalam Laravel dan berkongsi contoh penggunaan saluran paip dalam Laravel, saya harap ia akan membantu semua orang.

Ketahui cara menggunakan saluran paip dalam Laravel melalui contoh

Memperkenalkan penggunaan sebenar saluran paip dari perspektif kod. Terdapat banyak maklumat tentang saluran paip di Internet, jadi semaknya sendiri. Blog ini menggunakan saluran paip untuk memproses nama bagi mencapai pemprosesan bersatu.

Latar belakang: Terdapat banyak pengenalan kepada penggunaan saluran paip yang boleh didapati pada masa ini kebanyakannya hanya menumpukan pada pengenalan dan panduan, dan tidak banyak bahagian yang benar-benar masuk ke dalam kod. Mengikut pengenalan, terdapat halangan tertentu untuk menggunakan saluran paip Berikut adalah contoh kod terperinci menggunakan saluran paip untuk rujukan sahaja. Pengenalan ini adalah petikan kod proses yang sebenarnya saya gunakan, saya mengujinya sendiri dan ia sebenarnya boleh digunakan. Sekadar menarik perhatian, jangan kecam kalau tak suka.

1. Pengawal

Bahagian penghala

Route::get('/pipe', ['as'=>'pipe', 'uses'=>'PipeController@index']);

Kod kawalan

<?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 daripada

struktur direktori adalah seperti berikut:

├─app
│  │  User.php
│  ├─Http
│  │  ...
│  │
│  ├─Models
│  │  ...
│  │
│  ├─Pipes
│  │  │  BothSidesWords.php
│  │  │  LeftWords.php
│  │  │  RightWords.php
│  │  │
│  │  └─Contracts
│  │          PipeContracts.php
  • interface kod Kod di bawah laluan app/Pipes/Contracts/Pipe.php adalah seperti berikut:

    <?php
    namespace App\Pipes\Contracts;
    
    use Closure;
    
    interface PipeContracts
    {
        public function handle($body, Closure $next);
    }
  • Kod tiga kelas paipLeftWords.phpKod

    <?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.phpKod kod
    <?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.&#39;-right&#39;;
    
            return $next($body);
        }
    }
    BothSidesWords.php kod
    <?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);
        }
    }

Di sini kami menggunakan kaedah lalai saluran paip handle, anda boleh menyesuaikan nama kaedah. Takrifkan myHandleMethod sebagai nama kaedah pemprosesan seperti berikut.

return app(Pipeline::class)
	       ->send($name)
	       ->through($this->pipes)
	       ->via(&#39;myHandleMethod&#39;)
	       ->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;),
	           ]);
	       });

Selepas anda mentakrifkannya seperti ini, ubah suai interface anda dan ubah suai kelas pelaksanaan anda pada masa yang sama.

3. Penerangan Keputusan

Selepas mengakses http://localhost/pipe?name=lisa, keputusan yang diperolehi boleh dicetak dengan jayanya. UserDi dalam jadual, terdapat data yang berjaya disimpan.

{
"name": "[left-lisa-right]",
"email": "3riSrDuBFv@gmail.com",
"updated_at": "2020-09-05T05:57:14.000000Z",
"created_at": "2020-09-05T05:57:14.000000Z",
"id": 15
}

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !

Atas ialah kandungan terperinci Ketahui cara menggunakan saluran paip dalam Laravel melalui contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam