你将如何转换:
$Object->one;
$Object->two;
为:
$one;
$two;
答案 0 :(得分:2)
将其转换为数组,然后extract()
。
保持alcuadrado关于封装的评论; extract()
仅适用于公共实例变量(我已经更新了我的示例代码以显示此内容)这一事实强调了这一点。
class TestClass
{
public $one = 1;
public $two = 2;
private $three = 3;
}
$object = new TestClass;
extract((array) $object);
var_dump($one, $two, $three);
输出:
Notice: Undefined variable: third in...
int(1)
int(2)
NULL
答案 1 :(得分:2)
如果在对象上使用foreach循环,它将迭代可见属性而不暴露私有成员。
foreach ($object as $key => $value){
$$key = $value;
}
答案 2 :(得分:2)
尝试:extract(get_object_vars($Object));
这只会得到公共变量。如果你想私有,那么你需要从对象本身内调用它。