如何检查三种状态(null, false, true)值


How to check three state (null, false, true) value?

我有这样一段代码:

public function setValue($flag) {
  $this->value = isset($flag) ? (bool) $flag : null;
}

我假设$flag可以表示null、false或true。(我做类型转换的原因是我只关心类型。)

编辑:这是我的目标:

  • 如果$flag为空,则$this->value为空,
  • 如果(bool)$flag为false,则$this->value为false,
  • 如果(bool)$flag为真,则$this->value为真。

这是我的代码所说的。我想知道,我提交的代码是实现我目标的好方法,还是有更好(更简单、更优雅)的方法?

编辑

我只是读了你的编辑,如果你的代码是工作的,那么继续做你已经做的方式,因为这种方式是方便和整洁的。唯一的问题是我会先检查isset

$this->value = null;
if(isset($flag)) {
    setValue($flag);
}
public function setValue($flag) {
  $this->value = (bool) $flag
}

如果值为NULL,则isset将返回false。您还应该检查is_null