$a = (object)['foo' => 'bar'];
$a->baz;
$a->baz
来电返回NULL
,但也会发出通知Undefined property..
。当一个属性不存在但是有什么方法可以抑制这个特殊的通知(从配置或其他东西,而不是if语句或@符号,这是显而易见的)但是看到其他通知时,获取null就没关系了吗?
答案 0 :(得分:1)
一种可能的解决方案是创建一个使用__get
魔术方法的自定义std类:
class customStdClass
{
public function __get($name)
{
if (!isset($this->$name)) {
return null;
}
return $this->$name;
}
public static function fromArray($attributes)
{
$object = new self();
foreach ($attributes as $name => $value) {
$object->$name = $value;
}
return $object;
}
}
您可以像以下一样使用它:
$object = customStdClass::fromArray(['foo' => 'bar']);
echo $object->foo;
echo $object->baz; // no warning here