【发布时间】:2019-11-26 22:36:57
【问题描述】:
当在整个控制器中使用相同的变量时,最好设置会话变量,还是重复调用相同的辅助函数?例如,假设我有一个具有 hexColor 属性的 Ball 对象:
$ball->hexColor;
数据库中的 Ball 表结构如下:
id | name | hexColor
现在,假设这个十六进制颜色有一个较浅的版本和一个较深的版本,我不想存储在表格中,以节省内存并避免冗余数据:
不是这个:
id | name | hexColor | lightHexColor | darkHexColor
我在模型中有一个使颜色变亮或变暗的函数:
//second parameter: 1 = darken, 2 = lighten
public static function changeColorBrightness(String $hexColor, int $darkenOrLighten)
{
/* Some code */
return $alteredColor;
}
在我的控制器中,我是否只调用此辅助函数两次,一次用于变暗,一次用于变亮,并将它们存储在会话中:
public function someFunction($ballId)
{
$ball = Ball::find($ballId);
$darkColor = Ball::changeColorBrightness($ball->hexColor, 1);
$lightColor = Ball::changeColorBrightness($ball->hexColor, 2);
session()->set('darkColor', $darkColor);
session()->set('lightColor', $lightColor);
}
或者我是否在需要更改颜色的每个方法中调用辅助函数的效率较低:
public function methodCalledFromRoute_1($ballId)
{
$ball = Ball::get($ballId);
$darkColor = Ball::changeColorBrightness($ball->hexColor, 1);
$lightColor = Ball::changeColorBrightness($ball->hexColor, 2);
/* More code */
}
public function methodCalledFromRoute_2($ballId)
{
$ball = Ball::get($ballId);
$darkColor = Ball::changeColorBrightness($ball->hexColor, 1);
$lightColor = Ball::changeColorBrightness($ball->hexColor, 2);
/* More code */
}
etc.
我觉得第一种方法,设置会话变量一次,不被认为是最佳编码实践,但我不确定为什么不这样做。你们怎么看,更好的方法是什么?为什么?
【问题讨论】:
-
为什么不在
Ball类上使用访问器?
标签: php laravel session eloquent