gpt4 book ai didi

PHP:isset() 为对象的动态属性返回 false

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:39 25 4
gpt4 key购买 nike

我有一个从数据库初始化的类的层次结构。我在通用 Item 基类中将 __get() 和 __set() 与数组一起使用,以支持不同数量的属性。派生自Item的一个类,UserProfile,用于存储用户数据。我的数据库中有一个电话号码表,与用户表是一对多的关系,用于存储一个用户的多个电话号码。如果有手机,则 UserProfile 对象有一个移动字段。家庭和企业也一样。如果不存在数字,则不存在属性。

当我想测试这些属性是否存在时,问题就来了。当我使用类似的代码时

if (isset($clientData->home_phone))
{
$this->startElement('phone');
$this->writeAttribute('phone_number_type','home');
$this->writeRaw($clientData->home_phone);
$this->endElement();
}

该函数始终返回 false。我尝试使用括号告诉 php 先获取变量,但我只是遇到了错误。我需要一个特殊的 attributeExists() 函数来模拟 isset() 的功能,还是有更直接的方法?

如何在不出现某种错误的情况下测试动态属性的存在?

最佳答案

有一个magic method称为 __isset(),其工作方式类似于 __get()__set()。它会让你在你的动态属性上调用 isset

关于PHP:isset() 为对象的动态属性返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7864071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com