public function fromArray($arr) { foreach ($arr as $k => $v) { if (is_array($v)) { $clazz = ReflectionUtil::getPropertyClass(get_class($this), $k); if (ArrayUtil::isAssocArray($v)) { $o = new $clazz(); $o->fromArray($v); $setterFunc = "set" . ucfirst($k); $this->{$setterFunc}($o); } else { $setterFunc = "set" . ucfirst($k); $arr = array(); foreach ($v as $nk => $nv) { if (is_array($nv)) { $o = new $clazz(); $o->fromArray($nv); $arr[$nk] = $o; } else { $arr[$nk] = $nv; } } $this->{$setterFunc}($arr); //TODO: Cleaning up any current values in this case. Should be doing this allways } } else { $this->{$k} = $v; } } }
/** * Fills object value from Array list * * @param $arr * @return $this */ public function fromArray($arr) { if (!empty($arr)) { foreach ($arr as $k => $v) { if (is_array($v)) { $clazz = ReflectionUtil::getPropertyClass(get_class($this), $k); if (ArrayUtil::isAssocArray($v)) { /** @var self $o */ $o = new $clazz(); $o->fromArray($v); $this->assignValue($k, $o); } else { $arr = array(); foreach ($v as $nk => $nv) { if (is_array($nv)) { $o = new $clazz(); $o->fromArray($nv); $arr[$nk] = $o; } else { $arr[$nk] = $nv; } } $this->assignValue($k, $arr); } } else { $this->assignValue($k, $v); } } } return $this; }
/** * Fills object value from Array list * * @param $arr * @return $this */ public function fromArray($arr) { if (!empty($arr)) { // Iterate over each element in array foreach ($arr as $k => $v) { // If the value is an array, it means, it is an object after conversion if (is_array($v)) { // Determine the class of the object if (($clazz = ReflectionUtil::getPropertyClass(get_class($this), $k)) != null) { // If the value is an associative array, it means, its an object. Just make recursive call to it. if (empty($v)) { if (ReflectionUtil::isPropertyClassArray(get_class($this), $k)) { // It means, it is an array of objects. $this->assignValue($k, array()); continue; } $o = new $clazz(); //$arr = array(); $this->assignValue($k, $o); } elseif (ArrayUtil::isAssocArray($v)) { /** @var self $o */ $o = new $clazz(); $o->fromArray($v); $this->assignValue($k, $o); } else { // Else, value is an array of object/data $arr = array(); // Iterate through each element in that array. foreach ($v as $nk => $nv) { if (is_array($nv)) { $o = new $clazz(); $o->fromArray($nv); $arr[$nk] = $o; } else { $arr[$nk] = $nv; } } $this->assignValue($k, $arr); } } else { $this->assignValue($k, $v); } } else { $this->assignValue($k, $v); } } } return $this; }