rin*_*ogo 13 php attributes class
有没有一种简单的方法从对象中删除成员?不只是将其设置为null,而是实际将其删除.
谢谢!:)
编辑:我已经尝试过unset(),并且将成员变量设置为null显然不起作用.我想我可以将对象转换为数组,然后删除有问题的数组键,并转换回一个对象,但是发誓......必须有一个更简单的方法!
mar*_*rio 16
您正在使用RedBean.刚检查出来.而这些bean对象没有实际属性.
unset($bean->field);
Run Code Online (Sandbox Code Playgroud)
不起作用,因为它->field是一个虚拟属性.它在课堂上不存在.相反,它位于protected $bean->properties[]您无法访问的位置.RedBean仅实现魔术方法__get以及__set检索和设置属性.
这就是为什么unset()不起作用的原因.它取消了在该位置从未存在过的属性.
Jon*_*Jon 10
$obj = new stdClass;
$obj->answer = 42;
print_r($obj);
unset($obj->answer);
print_r($obj);
Run Code Online (Sandbox Code Playgroud)
对我来说很好.你确定你做得对吗?
更新:
它也适用于类中定义的属性:
class Foo {
public $bar = 42;
}
$obj = new Foo;
print_r($obj);
unset($obj->bar);
print_r($obj);
Run Code Online (Sandbox Code Playgroud)
在您的对象中,您可以定义一个名为 __unset
class Test
{
public $data = array();
public function __unset($key)
{
unset($this->data[$key]);
}
}
Run Code Online (Sandbox Code Playgroud)
乔恩很好地总结了其他因素。