什么是检查实例变量是否从未分配的好方法?考虑下面的例子。 $this->foo
为空即可开始。如果在数据库中找到$this->foo
,则后续调用getFoo()
将不会查询数据库。但是,如果数据库中没有任何内容被返回(null),所有后续调用仍然会触发数据库..不好。php检查是否声明了实例变量但未分配实例变量
class FooBar
{
protected $foo;
protected $db;
public function getFoo()
{
if (is_null($this->foo)) {
$this->foo = $this->db->getFooFromDatabase();
}
return $this->foo;
}
}
我认为你需要使用一个虚拟值而不是null ......这样你可以区分“未设置”和“空”。 – mpen
@标记我认为你是对的。不知道是否有一个流行的价值/对象/不断这样做 – David