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

Ben*_*Ben 2 php stdclass

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

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

hak*_*kre 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);
Run Code Online (Sandbox Code Playgroud)


Tim*_*per 5

使用get_object_vars()通过迭代stdClass对象,然后使用property_exists()功能,看是否在父类存在的当前属性.