Laravel如何不再重写相同的代码

时间:2017-07-11 15:19:05

标签: laravel function duplicates

我有一个模型,称为Tours和控制器ToursController,它使用restful方法(索引,显示,存储,编辑,更新等)。

现在我有了这段代码:

$names = request()->get('names');
$lastnames = request()->get('lastnames');
$hotels = request()->get('hotel');

在Store和Update中。所以我复制相同的代码两次。这只是重复代码的一个例子。

我想创建一个函数" getEverythingFromRequest()"

我可以在Store和Update方法中使用它。类似的东西:

public function store (Request $request) {

getEverythingFromRequest();

dd($names[3];

}


public function store (Request $request) {

getEverythingFromRequest();

dd($hotels[2];

}

我该怎么办?在全球范围内,如何避免在Controller中重写相同的代码?

1 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题。一种方法是创建一个从您的请求中提取数组的repo。 (我更新了我的代码以使用注入)。

<强>控制器

public function store (GuestsRepository $repo, Request $request) {

  dd($repo->names);

}

存储库

<?php

namespace App;

class GuestsRepository
{
    public $names;
    public $lastnames;
    public $hotels;

    public function __construct(){
        $this->names = request()->get('names');
        $this->lastnames = request()->get('lastnames');
        $this->hotels = request()->get('hotel');
    }
}