在Laravel控制器中使用公共静态功能是否不好
在我的产品模型中,我有一个看起来像这样的函数:
public static function setEndDate($time)
{
if ($time == 2)
{
return Carbon::now()->addMonths(2)->toDateTimeString();
}
else
{
return Carbon::now()->addDays($time)->toDateTimeString();
}
}
然后在我的控制器中使用如下功能:
//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的答案)
无论如何,Eloquent为您的这个特定问题提供了一个更好的解决方案:Mutators!
它们是一种“设置方法”,您可以在其中修改或变异将分配给该属性的值。这是一个例子:
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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句