Пример #1
0
 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;
         }
     }
 }
Пример #2
0
 public function testIsAssocArray()
 {
     $arr = array(1, 2, 3);
     $this->assertEquals(false, ArrayUtil::isAssocArray($arr));
     $arr = array('name' => 'John Doe', 'City' => 'San Jose');
     $this->assertEquals(true, ArrayUtil::isAssocArray($arr));
     $arr[] = 'CA';
     $this->assertEquals(false, ArrayUtil::isAssocArray($arr));
 }
Пример #3
0
 /**
  * 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;
 }
Пример #4
0
 /**
  * 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;
 }