• 技术文章 >php框架 >Laravel

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

    藏色散人藏色散人2020-09-08 09:17:43转载647

    下面由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
     <?php
     namespace App\Pipes\Contracts;
    
     use Closure;
    
     interface PipeContracts
     {
         public function handle($body, Closure $next);
     }
      <?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中使用管道处理名字, 实现统一处理的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:laravel
    上一篇:Laravel可以优雅的修改默认自增ID开始值了! 下一篇:Laravel7如何使用constrained方法来设置数据库外键
    大前端线上培训班

    相关文章推荐

    • Laravel Installer 4.0 更新了!• Laravel 8新特性之“时间旅行”• 分享Laravel Passport 踩坑日记• Laravel可以优雅的修改默认自增ID开始值了!

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网