La colonne tutorielle suivante de Laravel vous guidera à travers le pipeline dans Laravel et partagera un exemple d'utilisation du pipeline dans Laravel. J'espère qu'elle sera utile à tout le monde !
Présentation de 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 réellement 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é, je l'ai testé moi-même et il est réellement utilisable. Juste pour attirer l’attention, ne critiquez pas si vous n’aimez pas ça.
Partie routeur
Route::get('/pipe', ['as'=>'pipe', 'uses'=>'PipeController@index']);
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('name'); // $name = Str::random(10); return app(Pipeline::class) ->send($name) ->through($this->pipes) ->then(function ($content) { return User::create([ 'name' => $content, 'email'=>Str::random(10).'@gmail.com', 'password'=>Hash::make('password'), ]); }); } }
La structure du répertoire est la suivante :
├─app │ │ User.php │ ├─Http │ │ ... │ │ │ ├─Models │ │ ... │ │ │ ├─Pipes │ │ │ BothSidesWords.php │ │ │ LeftWords.php │ │ │ RightWords.php │ │ │ │ │ └─Contracts │ │ PipeContracts.php
Code interface
Le code sous le chemin app/Pipes/Contracts/Pipe.php
est le suivant : interface
的代码
路径app/Pipes/Contracts/Pipe.php
下的代码如下:
<?php namespace App\Pipes\Contracts; use Closure; interface PipeContracts { public function handle($body, Closure $next); }
三个管道的类的代码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 = 'left-'.$body; return $next($body); } }
LeftWords.php
的代码<?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.'-right'; return $next($body); } }
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 = '['.$body.']'; return $next($body); } }
这里我们使用管道默认的方法handle
,你可以自定义方法名。像下面这样定义myHandleMethod
为处理方法名称。
return app(Pipeline::class) ->send($name) ->through($this->pipes) ->via('myHandleMethod') ->then(function ($content) { return User::create([ 'name' => $content, 'email'=>Str::random(10).'@gmail.com', 'password'=>Hash::make('password'), ]); });
你这样定义后,修改你的interface
,同时修改你的实现类即可。
访问http://localhost/pipe?name=lisa
之后,能成功打印出获取的结果。User
{ "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 }
Le code des trois classes de tuyaux LeftWords.php
Le code de rrreeeLeftWords.php
rrreeeBothSidesWords.php
Le code rrreeeIci nous utilisons la méthode par défaut du pipeline handle
, vous pouvez personnaliser le nom de la méthode. Définissez myHandleMethod
comme nom de méthode de traitement comme suit.
interface
et modifiez votre classe d'implémentation en même temps. 🎜http://localhost/pipe?name=lisa
, les résultats obtenus peuvent être imprimés avec succès. Des données ont été enregistrées avec succès dans la table Utilisateur
. 🎜rrreee🎜Pour plus de connaissances sur la programmation, veuillez visiter : 🎜Vidéo de programmation🎜 ! ! 🎜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!