我在这里有点困惑。当一个对象的值没有设置时,我需要抛出一个异常,但是不管它是设置还是没有设置,它都会抛出我的异常。
我运行
var_dump(isset($this->{$idName}));
var_dump($this->{$idName});
结果是
bool(false)
string(1) "1"
我希望第一个是真的。我是不是错过了一些显而易见的东西?
为了明确起见,我试图检查是否设置了存储在$idName
中的对象的属性。在这种情况下$idName = "id"
所以$this->id
是我正在检查的。
$this->id
将从__get()中检索
看起来您缺少神奇的__isset()
方法。
public function __isset($name)
{
return isset($this->data[$name]);
}
根据存储数据的位置进行更改。
来自手册:
__通过对不可访问的属性调用isset()或empty()来触发isset(()。
如果此属性是私有/受保护的,并且您试图使用$this->属性语法从外部直接访问其值,请确保它不仅仅是从您的类__get()魔术方法混合而来。