php - Laravel 在 Controller 中使用公共(public)静态函数是不是很糟糕

标签 php laravel static-methods

<分区>

在 laravel Controller 中使用 public static 函数不好吗

在我的产品模型中,我有一个如下所示的函数:

public static function setEndDate($time)
{
   if ($time == 2)                                                 
   {
         return Carbon::now()->addMonths(2)->toDateTimeString();
   }
   else                                                            
   {
         return Carbon::now()->addDays($time)->toDateTimeString();
   }

}

然后在我的 Controller 中,我像这样使用该函数:

//Validation etc..

$time = Input::get('end_date'); //To transform end-time

$newProduct = new Product();

$newProduct->some_value = Input::get('some_value');
$newProduct->some_value = Input::get('some_value');


$newProduct->end_date = Product::setEndDate($time); //Using my static function like this


newProduct->save();

像上面那样使用静态函数不好吗?

最佳答案

这个问题本身是基于意见的。我不会说在您的模型中使用这些方法一定不好,但我也不建议这样做。 (有关该检查的更多信息,请查看 @Colin Schoen's answer)

无论如何,Eloquent 为您的这个特定问题提供了更好的解决方案:Mutators!

它们是一种“setter 方法”,您可以在其中修改或改变 将分配给属性的值。这是一个例子:

public function setEndDateAttribute($time){
    if ($time == 2)                                                 
    {
        $this->attributes['end_date'] = Carbon::now()->addMonths(2)->toDateTimeString();
    }
    else                                                            
    {
        $this->attributes['end_date'] = Carbon::now()->addDays($time)->toDateTimeString();
    }
}

然后你像这样使用它:

$newProduct->end_date = $time;

关于php - Laravel 在 Controller 中使用公共(public)静态函数是不是很糟糕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27879240/

相关文章:

javascript - $_POST ['data' ] 未定义,如果数据太大

java - 在静态方法中访问全局类的全局方法

python - 静态方法作为类方法的默认参数

php - 如何在 Laravel 4 中实现用户权限?

php - 找不到 Laravel API 路由

laravel - 如何使用 eloquent laravel 过滤两个日期之间的数据?

java - 是否可以访问并设置为另一个类的静态变量

PHP array_column - 如何保留 key ?

php - 从查询中提取 MySQL 数据

php - 如何在php中查看mysql查询结果