Php 避免注意:stdClass中未定义属性

Php 避免注意:stdClass中未定义属性,php,notice,Php,Notice,$a->baz调用返回NULL,但也会引发一个通知未定义的属性..。当属性不存在时,获取null对我来说没什么问题,但是有没有办法抑制这种特殊的通知(从配置或其他方面,而不是if语句或@symbols,这很明显)但是请继续查看其他注意事项?一个可能的解决方案是创建一个自定义std类,该类使用\u get魔术方法: $a = (object)['foo' => 'bar']; $a->baz; 您可以像这样使用它: class customStdClass { public

$a->baz
调用返回
NULL
,但也会引发一个通知
未定义的属性..
。当属性不存在时,获取null对我来说没什么问题,但是有没有办法抑制这种特殊的通知(从配置或其他方面,而不是if语句或@symbols,这很明显)但是请继续查看其他注意事项?

一个可能的解决方案是创建一个自定义std类,该类使用
\u get
魔术方法:

$a = (object)['foo' => 'bar'];
$a->baz;
您可以像这样使用它:

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