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

Ketahui cara menggunakan saluran paip dalam Laravel melalui contoh

青灯夜游
Lepaskan: 2021-10-11 11:09:41
ke hadapan
2130 orang telah melayarinya

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']);
Salin selepas log masuk

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;),
                ]);
            });
    }
}
Salin selepas log masuk

2 daripada

struktur direktori adalah seperti berikut:

├─app
│  │  User.php
│  ├─Http
│  │  ...
│  │
│  ├─Models
│  │  ...
│  │
│  ├─Pipes
│  │  │  BothSidesWords.php
│  │  │  LeftWords.php
│  │  │  RightWords.php
│  │  │
│  │  └─Contracts
│  │          PipeContracts.php
Salin selepas log masuk
  • 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);
    }
    Salin selepas log masuk
  • 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);
        }
    }
    Salin selepas log masuk
    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);
        }
    }
    Salin selepas log masuk
    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);
        }
    }
    Salin selepas log masuk

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;),
	           ]);
	       });
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan