是否可以检查 PHP stdClass 的属性?我有一些作为标准类生成的模型。使用它们时,我想检查我调用的属性是否存在于某种核心类中。我注意到 __get 被 stdClass 忽略了......
如果 stdClass 中的属性存在于对象中,如何检查它们?
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);
用于get_object_vars()
遍历stdClass
对象,然后使用property_exists()
函数查看当前属性是否存在于父类中。
只需将其转换为数组
$x = (array) $myStdClassObject;
然后就可以使用所有常用的数组函数了