是否可以从PHP stdClass检查属性?我有一些模型作为stdClass生成。在使用它们时,我想检查我正在调用的属性是否存在于某种Core类中。我注意到stdClass忽略了__get ......
如果stdClass中的属性存在于对象中,它们如何检查?
答案 0 :(得分:6)
StdClass
个对象只包含porperties,而不包含代码。因此,您无法从“内部”编码任何内容。所以你需要解决这个“缺点”。根据生成这些类的内容,可以通过“重载”数据(例如使用 Decorator )来提供您正在寻找的功能:
class MyClass
{
private $subject;
public function __construct(object $stdClass)
{
$this->subject = $stdClass;
}
public function __get($name)
{
$exists = isset($this->subject->$name);
#...
}
}
$myModel = new MyClass($model);
答案 1 :(得分:5)
使用get_object_vars()
遍历stdClass
对象,然后使用property_exists()
函数查看父类中是否存在当前属性。
答案 2 :(得分:0)
将其强制转换为数组
$x = (array) $myStdClassObject;
然后你可以使用所有常见的数组函数