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('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'), ]); }); } }
2. パイプライン部分
├─app │ │ User.php │ ├─Http │ │ ... │ │ │ ├─Models │ │ ... │ │ │ ├─Pipes │ │ │ BothSidesWords.php │ │ │ LeftWords.php │ │ │ RightWords.php │ │ │ │ │ └─Contracts │ │ PipeContracts.php
のコードは次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;"><?php
namespace App\Pipes\Contracts;
use Closure;
interface PipeContracts
{
public function handle($body, Closure $next);
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
3 つのパイプ クラスのコード
<?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<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;"><?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);
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div> のコード
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); } }
ここではパイプを使用しますデフォルトのメソッド
ハンドル を定義します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">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;),
]);
});</pre><div class="contentsignin">ログイン後にコピー</div></div>
このように定義したら、interface
を変更し、同時に実装クラスも変更します。
3. 結果の説明
テーブルには、正常に保存されたデータがあります。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">{
"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
}</pre><div class="contentsignin">ログイン後にコピー</div></div>プログラミング関連の知識については、<code>プログラミング ビデオ
をご覧ください。 !
以上がLaravel でパイプラインを使用する方法を例を通して学びますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。