PHP动态设置对象属性

Ben

我有一个函数,应该读取数组并动态设置对象属性。

class A {
    public $a;
    public $b;

    function set($array){
        foreach ($array as $key => $value){
            if ( property_exists ( $this , $key ) ){
                $this->{$key} = $value;
            }
        }
    }
}

$a = new A();
$val = Array( "a" => "this should be set to property", "b" => "and this also");
$a->set($val);

好吧,显然这是行不通的,有没有办法做到这一点?

编辑

这段代码似乎没什么问题,应该将问题关闭

半人马座

http://www.php.net/manual/zh/reflectionproperty.setvalue.php

Reflection我认为您可以使用

<?php 

function set(array $array) {
  $refl = new ReflectionClass($this);

  foreach ($array as $propertyToSet => $value) {
    $property = $refl->getProperty($propertyToSet);

    if ($property instanceof ReflectionProperty) {
      $property->setValue($this, $value);
    }
  }
}

$a = new A();

$a->set(
  array(
    'a' => 'foo', 
    'b' => 'bar'
  )
);

var_dump($a);

输出:

object(A)[1]
  public 'a' => string 'foo' (length=3)
  public 'b' => string 'bar' (length=3)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态设置对象属性值

来自分类Dev

是否可以在Java中动态设置对象属性(无反射)?

来自分类Dev

如何动态设置HGrow属性?

来自分类Dev

设置对象的属性

来自分类Dev

jQuery动态设置href属性

来自分类Dev

动态设置脚本标签的属性

来自分类Dev

php-动态选择对象的属性?

来自分类Dev

在Angular Js中动态设置范围对象的属性

来自分类Dev

AngularJS动态设置属性

来自分类Dev

使用map和setattr函数动态设置对象属性

来自分类Dev

动态对象或属性?

来自分类Dev

用JavaScript设置动态属性

来自分类Dev

在PHP对象动态属性上设置值

来自分类Dev

动态引用对象属性

来自分类Dev

动态引用对象属性

来自分类Dev

TypeScript:如何动态设置对象的属性?

来自分类Dev

动态设置img的src属性

来自分类Dev

动态设置对象属性值

来自分类Dev

是否可以在Java中动态设置对象属性(无反射)?

来自分类Dev

F#在ViewBag动态对象上设置属性(传递图像)

来自分类Dev

python-如何为对象设置动态属性

来自分类Dev

Velocity JS动态设置属性

来自分类Dev

动态对象或属性?

来自分类Dev

如何遍历多级php对象并动态取消设置最深节点

来自分类Dev

PHP:在foreach循环内设置对象属性

来自分类Dev

设置对象属性时,PHP运行函数/逻辑

来自分类Dev

PHP-从动态变量访问对象属性

来自分类Dev

多个动态对象属性

来自分类Dev

At @ sign in 动态对象的属性