在 php Laravel 5 中创建自定义辅助函数的最佳做法是什么?

What is the best practice to create a custom helper function in php Laravel 5?

我有

默认 created_at 日期以 MySQL 格式打印:2015-06-12 09:01:26。我想像 12/2/2017 一样以我自己的方式打印它,并在将来使用其他格式。


我创造了

一个名为 DataHelper.php 的文件并将其存储在 /app/Helpers/DateHelper.php - 它看起来像这样

<?php

namespace App\Helpers;

class DateHelper {

    public static function dateFormat1($date) {
        if ($date) {
            $dt = new DateTime($date);

        return $dt->format("m/d/y"); // 10/27/2014
      }
   }
}

我要

能够在我的 blade 视图中像

一样调用它
DateHelper::dateFormat1($user->created_at)

我不确定下一步该做什么。

在 php Laravel 5 中创建自定义辅助函数的最佳做法是什么?

  1. 在您的 app/Http 目录中,创建一个 helpers.php 文件并添加您的函数。
  2. composer.json 内,在 autoload 块中,添加 "files": ["app/Http/helpers.php"].
  3. 运行 composer dump-autoload

应该可以了。 :)

由于您的 Helper 方法是静态的,您可以将您的助手 class 添加到 config/app 别名,就像 Facade 一样,如下所示:

'aliases' => [
    //'dateHelper'=> 'App\Helpers\DateHelper', //for Laravel 5.0
    'dateHelper'=> App\Helpers\DateHelper::class, //for Laravel 5.1
] 

然后在您看来:

{{dateHelper::dateFormat1($user->created_at)}}

但是,如果您也在寻找一种无需助手即可完成此操作的方法 class。您可以考虑在您的模型中使用 Mutators 和 Appends:

class User extends Model{
   protected $fillable = [
     'date'
   ];

   protected $appends = [
     'date_format_two'
   ];


   public function getDateAttribute($value){
        $dt = new DateTime($value);
        return $dt->format("m/d/y"); // 10/27/2014
   }

    //date
    public function getDateFormatTwoAttribute($value){
        $dt = new DateTime($value);
        return $this->attributes['date_format_two'] = $dt->format("m, d ,y"); // 10,27,2014
    }
} 

以后可以做

$user = User::find(1);

{{$user->date}}; 
{{$user->date_format_two}};