Laravel 5中其他功能的最佳去处

时间:2019-01-09 13:46:07

标签: laravel

我想知道在控制器中使用附加功能的最佳位置是什么。这是一个示例:

public function store(CreateServiceRequest $request)
    {

      function getMonth($value)
      {
        if ($value == 1)
          {
          return 1;
        } else
        if ($value == 2)
          {
          return 3;
        } else
            if ($value == 3)
            {
              return 6;
            } else
            return 0;
      }

      function getYear($value)
      {
        if ($value == 4)
        {
          return 1;
        } else
        if ($value == 5)
        {
          return 2;
        } else
        if ($value == 6)
        {
          return 3;
        } else
        return 0;
      }

      function getTax($price, $vat)
      {
        $tax = ($vat/100*$price);
        return $tax;
      }

      $input = Request::all();

      $months = getMonth($input['period']);
      $years = getYear($input['period']);
      $tax = getTax($input['price_net'], $input['vat']);

      $input['price_vat'] = $tax;
      $input['price_gross'] = $input['price_net'] + $tax;
      $input['period_end'] = Carbon::createFromFormat('Y-m-d', $input['period_start'])->addYears($years)->addMonths($months)->toDateString();

      return $input;
    }

如您所见,在store方法内部,我编写了三个函数: getMonth,getYear和getTax。该方法首先获取所有请求,然后我需要创建一些新变量-例如,我得到了$input['period']并使用它来制作$input['period_end']。因此,我不会更改$input['period']的值,而是创建一个新的$input['period_end']。如果仅更改现有变量,则使用增幅器...那么问题是我应该将getMonth, getYear and getTax函数的代码放在哪里?存储方法似乎一团糟...

1 个答案:

答案 0 :(得分:2)

制作helpers.php(在.env文件所在的根目录中)。

if (! function_exists('helper_function')) {
    function helper_function()
    {
        return 'hello';
    }
}

,然后在您的composer.json中自动加载它:

"autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "helpers.php"
    ]
},

现在您可以在代码库中的任何地方调用您的辅助函数