通过实例来了解Laravel中管道的使用方法

广告:宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取~~~

通过实例来了解Laravel中管道的使用方法

下面由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下的代码如下:

<?phpnamespace App\Pipes\Contracts;use Closure;interface PipeContracts{    public function handle($body, Closure $next);}
登录后复制

三个管道的类的代码LeftWords.php的代码

<?phpnamespace 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的代码
<?phpnamespace 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的代码
<?phpnamespace 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中管道的使用方法的详细内容,更多请关注9543建站博客其它相关文章!

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:PHP8中针对数组的新函数,让数组操作更加容易
下一篇:PHP数组函数探究:array_combine()

发表评论

关闭广告
关闭广告