Maison > cadre php > Laravel > le corps du texte

Utilisez des canaux pour traiter les noms dans Laravel afin d'obtenir un traitement unifié

藏色散人
Libérer: 2020-09-08 09:17:43
avant
2268 Les gens l'ont consulté
Ce qui suit est

Laravel La colonne tutoriel partagera les exemples d'utilisation du pipeline dans Laravel, j'espère que cela sera utile aux amis dans le besoin !

Utilisez des canaux pour traiter les noms dans Laravel afin d'obtenir un traitement unifié

Présente l'utilisation réelle des pipelines du point de vue du code. Il existe de nombreuses informations sur les pipelines sur Internet, alors vérifiez-les par vous-même.

Ce blog utilise des pipelines pour traiter les noms afin d'obtenir un traitement unifié.

Contexte :

Il existe actuellement de nombreuses introductions à l'utilisation des pipelines. La plupart d'entre elles se concentrent uniquement sur l'introduction et les conseils, et il n'y a pas beaucoup de parties qui approfondissent vraiment le code. . Selon l'introduction, il existe certains obstacles à l'utilisation des pipelines. Voici un exemple de code détaillé sur l'utilisation des pipelines à titre de référence uniquement.
Cette introduction est un extrait de code du processus que j'ai réellement utilisé. Il a été testé par moi-même et est réellement utilisable. Juste pour attirer l’attention, ne critiquez pas si vous n’aimez pas ça.

1. Contrôleur

Partie routeur

Route::get('/pipe', ['as'=>'pipe', 'uses'=>'PipeController@index']);
Copier après la connexion
Code de contrôle

<?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;),
                ]);
            });
    }
}
Copier après la connexion

2. La structure du répertoire est la suivante :

├─app
│  │  User.php
│  ├─Http
│  │  ...│  │
│  ├─Models
│  │  ...│  │
│  ├─Pipes
│  │  │  BothSidesWords.php
│  │  │  LeftWords.php
│  │  │  RightWords.php
│  │  │
│  │  └─Contracts
│  │          PipeContracts.php
Copier après la connexion

    code de
  • Le code sous le chemin

    est le suivant : interface
    app/Pipes/Contracts/Pipe.php

     <?php
     namespace App\Pipes\Contracts;
    
     use Closure;
    
     interface PipeContracts
     {
         public function handle($body, Closure $next);
     }
    Copier après la connexion

Code des trois classes de tuyaux
    Code de

  • 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);
         }
     }
    Copier après la connexion

  • Code
code de
  <?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);
     }
 }
Copier après la connexion

LeftWords.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);
     }
 }
Copier après la connexion

Ici nous utilisons la méthode par défaut du pipelineBothSidesWords.php, vous pouvez personnaliser le nom de la méthode. Définissez

comme nom de la méthode de traitement comme suit.

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;),
            ]);
        });
Copier après la connexion
handleAprès l'avoir défini ainsi, modifiez votre myHandleMethod et modifiez votre classe d'implémentation en même temps.

interface

3. Description des résultats

Après avoir accédé à , les résultats obtenus peuvent être imprimés avec succès.

Dans le tableau, les données sont enregistrées avec succès.

{
"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
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!