是否可以從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