/** * @param array $source * @param boolean $enableSideLoading * @return string */ public function serialize(array $source, $enableSideLoading = TRUE) { $data = array(); foreach ($source as $variableName => $valueToRender) { if (class_exists($variableName)) { $variableName = EmberDataUtility::uncamelizeClassName($variableName); } $data[$variableName] = $this->transformValue($valueToRender, isset($this->configuration[$variableName]) ? $this->configuration[$variableName] : array(), FALSE, $enableSideLoading); } if (!empty($this->objectsToSideload)) { foreach ($this->objectsToSideload as $objectType => $objectUuids) { if (empty($objectUuids)) { continue; } if (!isset($data[$objectType])) { $data[$objectType] = array(); } foreach ($objectUuids as $objectUuid) { $object = $this->persistenceManager->getObjectByIdentifier($objectUuid, EmberDataUtility::camelizeClassName($objectType)); $data[$objectType][] = $this->transformValue($object, isset($this->configuration[$objectType]) ? $this->configuration[$objectType] : array(), FALSE, FALSE); } } } foreach ($data as $objectType => $sideLoadedCollection) { foreach ($sideLoadedCollection as $objectIndex => $sideLoadedObject) { if (isset($sideLoadedObject['links'])) { foreach ($sideLoadedObject['links'] as $propertyName => $links) { $data[$objectType][$objectIndex]['links'][$propertyName] = $this->getUrl($propertyName) . implode(',', $links); } } } } return json_encode((object) $data); }
/** * @param string $value * @return boolean */ protected function matchValue($value) { if ($value === NULL || $value === '') { return FALSE; } $className = EmberDataUtility::camelizeClassName($value); if ($this->objectManager->isRegistered($className)) { $this->setName('modelName'); $this->value = $className; return TRUE; } return FALSE; }