将对象转换为一组变量

时间:2010-09-14 05:27:31

标签: php variables

你将如何转换:

$Object->one;
$Object->two;

为:

$one;
$two;

3 个答案:

答案 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));

这只会得到公共变量。如果你想私有,那么你需要从对象本身内调用它。