使用对象中的元素添加类变量

时间:2010-09-27 19:13:33

标签: php javascript json object

$class = new Class;
$foo = json_decode($_POST['array']);

在这个非常人为的例子中,我有一个有自己的函数和变量的类,等等等等。

我刚刚解码了一个JSON字符串,因此这些值现在位于$foo。如何将$foo中的元素移至$class,以便:

$foo->name变为$class->name

如果我知道所有元素是什么,那将是微不足道的,是的......除了为了充满活力,让我说我希望它们全部转移过来,我不知道他们的名字。

2 个答案:

答案 0 :(得分:2)

您可以使用get_object_vars

$vars = get_object_vars($foo);
foreach ($vars as $key => $value) {
    $class->$key = $value;
}

你也可以在你的班级实现这个:

public function bindArray(array $data) {
    foreach ($data as $key => $value) {
        $this->$key = $value;
    }
}

然后将对象转换为数组:

$obj->bindArray( (array) $foo );

或添加方法来执行此操作:

public function bindObject($data) {
     $this->bindArray( (array) $data );
}

答案 1 :(得分:1)

向类添加一个函数以从对象加载值,然后使用foreach迭代对象的属性并将它们添加到类中(在初始化它们之前,不需要声明类成员):

class Class
{
  function load_values($arr)
  {
    foreach ($arr as $key => $value)
    { 
      $this->$key = $value;
    }
  }
}

$class = new Class;
$foo = json_decode($_POST['array']);
$class->load_values((array)$foo);