假设这种情况。您有一个带有方法的类,对于给定的实例,它始终返回相同的值(例如,由构造函数确定)。
final class A
{
private const VALUES = [/*long array*/];
private $a = 5; // initialized in constructor, immutable afterwards
public function isSafe(): bool
{
return \in_array($this->a, self::VALUES, true);
}
}
在函数局部静态变量中缓存它有什么缺点吗?例如像这样:
final class A
{
private const VALUES = [/*long array*/];
private $a = 5; // initialized in constructor, immutable afterwards
public function isSafe(): bool
{
static $result = null;
return $result ?? $result = \in_array($this->a, self::VALUES, true);
}
}
这种方法的优缺点是什么?有替代品吗?这被认为是好、坏或任何做法(如果是:为什么)?或者,例如,“缓存”应该已经在构造函数中发生了吗?
侃侃无极
狐的传说