全局检查PHP stdClass中的有效属性?

时间:2011-11-17 14:55:27

标签: php stdclass

是否可以从PHP stdClass检查属性?我有一些模型作为stdClass生成。在使用它们时,我想检查我正在调用的属性是否存在于某种Core类中。我注意到stdClass忽略了__get ......

如果stdClass中的属性存在于对象中,它们如何检查?

3 个答案:

答案 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;

然后你可以使用所有常见的数组函数