添加到一个类具有对象中元素的变量

发布于 2024-09-24 19:36:35 字数 374 浏览 2 评论 0原文

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

在这个精心设计的示例中,我有一个具有自己的函数和变量的类,等等。

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

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

如果我知道所有元素是什么,那将是微不足道的,是的……除了为了保持动态之外,假设我希望将它们全部转移过来,而且我不知道它们的名字。

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

In this highly contrived example, I have a class with its own functions and variables, blah blah.

I also just decoded a JSON string, so those values are now in$foo. How do I move the elements in $foo over to $class, so that:

$foo->name becomes $class->name?

Would be trivial if I knew what all the elements were, yes... except for the sake of being dynamic, let's say I want them all transferred over, and I don't know their names.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

囍笑 2024-10-01 19:36:35

您可以使用 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 );
}

You could use get_object_vars:

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

You could also implement this in your class:

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

And then cast the object into an array:

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

or add a method to do that too:

public function bindObject($data) {
     $this->bindArray( (array) $data );
}
心不设防 2024-10-01 19:36:35

向类中添加一个函数以从对象加载值,然后使用 < code>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);

Add a function to your class to load values from an object, and then use foreach to iterate over the object's properties and add them to the class (you do not need to declare your class members before you initialize them):

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文