是否可以从PHP stdClass中检查属性?我有一些正在生成stdClass的模型。当使用它们时,我想检查我调用的属性是否存在于某种Core类中。我注意到__get被stdClass忽略...全局检查PHP stdClass中的有效属性?
如果stdClass中的属性存在于对象中,如何检查其属性?
是否可以从PHP stdClass中检查属性?我有一些正在生成stdClass的模型。当使用它们时,我想检查我调用的属性是否存在于某种Core类中。我注意到__get被stdClass忽略...全局检查PHP stdClass中的有效属性?
如果stdClass中的属性存在于对象中,如何检查其属性?
StdClass
对象只包含porperties,不包含代码。所以你不能从“内部”编写任何代码。所以你需要解决这个“短缺”问题。根据由什么产生这些类可以做到这一点“超载”的数据(例如用装饰)提供的功能,你在寻找:
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()
函数查看父类中是否存在当前属性。
也许我不明白你的意思与“__get由stdClass的忽略”,但'__get()'是在'stdClass' _not implemented_。 – KingCrunch
我不知道。感谢您清理:) – Ben
如果我理解您的意见如下:您也可以实现'__isset()' – KingCrunch