/** * Hydrate $object with the provided $data. * * @param array $data * @param object $structure * @return object */ public function hydrate(array $data, $structure) { if ($structure instanceof Structure\ProxyBase) { if (isset($data['tags']) && is_string($data['tags'])) { $data['tags'] = explode(static::TAG_SEPARATOR, $data['tags']); } if (isset($data['tagIds']) && is_string($data['tagIds'])) { $data['tagIds'] = explode(static::TAG_SEPARATOR, $data['tagIds']); } if (isset($data['localeTags']) && is_string($data['localeTags'])) { $data['localeTags'] = explode(static::TAG_SEPARATOR, $data['localeTags']); } if (isset($data['proxyData'])) { $proxyData = $data['proxyData'] ?: array(); unset($data['proxyData']); if (is_string($proxyData)) { $proxyData = $this->parseProxyData($proxyData); } if (is_array($proxyData)) { $proxyData = array_merge($data, $proxyData); } foreach (static::$columns as $column => $type) { unset($proxyData[$column]); } } else { $proxyData = $data; } $proxyData['proxyBase'] = parent::hydrate($data, $structure); $proxyData['type'] = $proxyData['proxyBase']->type; return $this->structureFactory->factory($proxyData); } return parent::hydrate($data, $structure); }
/** * Hydrate $object with the provided $data. * * @param array $data * @param object $structure * @return object */ public function hydrate(array $data, $structure) { if ($structure instanceof Structure) { if (isset($data[self::PROPERTIES_FIELD])) { $properties = $data[self::PROPERTIES_FIELD] ?: array(); unset($data[self::PROPERTIES_FIELD]); if (is_string($properties)) { $properties = $this->parseProperties($properties); } if (is_array($properties)) { $data[self::PROPERTIES_FIELD] = $properties; } } else { $data[self::PROPERTIES_FIELD] = array(); } } return parent::hydrate($data, $structure); }