Laravel中使用管道处理名字, 实现统一处理

互联网 20-9-8

下面由Laravel教程栏目给大家分享一个Laravel中的管道的使用实例,希望对需要的朋友有所帮助!

背景:目前能找到的使用管道的介绍也很多,大多停留在对其介绍和引导,真正的深入到代码的部分不多。根据介绍,使用管道也有一定的阻碍,这里分享一篇关于使用管道的详细的代码实例,仅供参考。本篇介绍是自己真实使用的过程的代码摘录,亲自测试,真实可用。只为抛砖引玉,不喜勿喷。

一、控制器

路由器部分

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'),                 ]);             });     } }

二、管道部分

目录结构如下:

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

以上就是Laravel中使用管道处理名字, 实现统一处理的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: laravel
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Laravel可以优雅的修改默认自增ID开始值了!

相关资讯