Guest User

Untitled

a guest
Jan 17th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. public function fromArray($arr)
  2. {
  3. if (!empty($arr)) {
  4. // Iterate over each element in array
  5. foreach ($arr as $k => $v) {
  6. // If the value is an array, it means, it is an object after conversion
  7. if (is_array($v)) {
  8. // Determine the class of the object
  9. if (($clazz = ReflectionUtil::getPropertyClass(get_class($this), $k)) != null) {
  10. // If the value is an associative array, it means, its an object. Just make recursive call to it.
  11. if (empty($v)) {
  12. if (ReflectionUtil::isPropertyClassArray(get_class($this), $k)) {
  13. // It means, it is an array of objects.
  14. $this->assignValue($k, array());
  15. continue;
  16. }
  17. $o = new $clazz();
  18. //$arr = array();
  19. $this->assignValue($k, $o);
  20. } elseif (ArrayUtil::isAssocArray($v)) {
  21. /** @var self $o */
  22. $o = new $clazz();
  23. $o->fromArray($v);
  24. $this->assignValue($k, $o);
  25. } else {
  26. // Else, value is an array of object/data
  27. $arr = array();
  28. // Iterate through each element in that array.
  29. foreach ($v as $nk => $nv) {
  30. if (is_array($nv)) {
  31. $o = new $clazz();
  32. $o->fromArray($nv);
  33. $arr[$nk] = $o;
  34. } else {
  35. $arr[$nk] = $nv;
  36. }
  37. }
  38. $this->assignValue($k, $arr);
  39. }
  40. } else {
  41. $this->assignValue($k, $v);
  42. }
  43. } else {
  44. $this->assignValue($k, $v);
  45. }
  46. }
  47. }
  48. return $this;
  49. }
Add Comment
Please, Sign In to add comment