2

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

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

4

3 回答 3

6

StdClass对象只包含属性,不包含代码。所以你不能从它们“内部”编码任何东西。所以你需要解决这个“缺点”。根据生成这些类的内容,可以通过“重载”数据(例如使用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);
于 2011-11-17T14:58:39.030 回答
5

用于get_object_vars()遍历stdClass对象,然后使用property_exists()函数查看当前属性是否存在于父类中。

于 2011-11-17T14:57:46.560 回答
0

只需将其转换为数组

$x = (array) $myStdClassObject;

然后就可以使用所有常用的数组函数了

于 2011-11-17T15:00:35.893 回答