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

2022-05-15 0 739

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

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

从代码的角度介绍管道的实际使用方式。有关管道的说明,网上已有较多的篇幅介绍,自行查阅。
本篇博客是使用管道处理名字, 实现统一处理的目的。

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

一、控制器

路由器部分

Route::get('/pipe', ['as'=>'pipe', 'uses'=>'PipeController@index']);

控制代码

<?phpnamespace 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}

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

【声明:根据2013年1月30日《计算机软件保护条例》2次修订第17条规定: 为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存 储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬! 鉴于此,也希望大家按此说明研究软件!】
本站所有源码尽量保证原汁原味,如有特殊情况会作出声明及标注,网站资源不做任何二次加密(原版加密除外,不影响程序使用的不会做解密处理),方便您更好的学习参考。 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

即刻码站__国内靠谱的站长资源下载平台 php教程 Laravel中使用管道处理名字, 实现统一处理 https://www.jike1995.com/36539.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务