动态propery显示false isset但非常下一行回显一个值

时间:2014-04-10 14:59:46

标签: php object properties

我在这里有点困惑。我需要在未设置对象的值时抛出异常,但无论是否设置,它都会抛出异常。

我跑

var_dump(isset($this->{$idName}));
var_dump($this->{$idName});

,结果是

bool(false) 
string(1) "1" 

我希望第一个是真的。我错过了一些明显的东西吗?

要克制,我正在尝试检查$idName中存储的对象的属性是否已设置。在这种情况下$idName = "id"
所以我$this->id正在检查。

将从__get()

中检索

$this->id

2 个答案:

答案 0 :(得分:2)

看起来你错过了神奇的__isset()方法。

public function __isset($name)
{
    return isset($this->data[$name]);
}

根据您存储数据的位置进行更改。

来自Manual

  

__ isset()是通过在不可访问的属性上调用isset()或empty()来触发的。

答案 1 :(得分:0)

如果此属性是私有/受保护的,并且您尝试使用$ this->属性语法直接从外部访问其值,请确保它不仅仅来自您的类__get()魔术方法。