检查对象中是否设置了变量

时间:2013-05-24 09:13:58

标签: php variables object isset

我有对象:

class Obj
{
    public $foo;
    public $bar;
}

$obj = new Obj();

print_R($obj);

输出:

Obj Object
(
    [foo] => 
    [bar] => 
)

但是

var_dump(isset($obj->foo));

输出 bool(false)

如何检查对象中的变量集?

2 个答案:

答案 0 :(得分:4)

由于

$foo = null;
var_dump(isset($foo)); // false

也许您想要使用property_existsReflectionClass::hasProperty

进行检查

答案 1 :(得分:2)

您应该同时使用issetproperty_exists

的组合
if (property_exists($obj,$foo) && isset($obj->$foo)) {
   // use $obj->foo
}

可能存在未设置任何内容的属性,该属性无法按预期方式访问。