addAssociatedObject() public method

public addAssociatedObject ( $parent_property, Object $object )
$object Object
Example #1
0
 /**
  * Load an assoc array into the instance of the object $property => $value
  * $replace_data - replace existing data
  *
  * @param $input_array
  * @param $replace_data
  */
 public function fromStringArray($input_array, $replace_data = false)
 {
     foreach (static::getProperties() as $property => $meta) {
         $type = $meta[self::KEY_TYPE];
         $php_type = $meta[self::KEY_PHP_TYPE];
         //If set and NOT replace data, continue
         if (!$replace_data && isset($this->_data[$property])) {
             continue;
         }
         if (!isset($input_array[$property])) {
             $this->_data[$property] = null;
             continue;
         }
         //Fix for an earlier assumption that the API didn't return more than
         //two levels of nested objects.
         //Handles Invoice > Contact > Address etc. in one build.
         if (is_array($input_array[$property]) && Helpers::isAssoc($input_array[$property]) === false) {
             $collection = new Collection();
             $collection->addAssociatedObject($property, $this);
             foreach ($input_array[$property] as $assoc_element) {
                 $cast = self::castFromString($type, $assoc_element, $php_type);
                 //Do this here so that you know it's not a static method call to ::castFromString
                 if ($cast instanceof Object) {
                     $cast->addAssociatedObject($property, $this);
                 }
                 $collection->append($cast);
             }
             $this->_data[$property] = $collection;
         } else {
             $cast = self::castFromString($type, $input_array[$property], $php_type);
             //Do this here so that you know it's not a static method call to ::castFromString
             if ($cast instanceof Object) {
                 $cast->addAssociatedObject($property, $this);
             }
             $this->_data[$property] = $cast;
         }
     }
 }