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