public function serializeOne(PyRestObject $object, array $options = array()) { if (!$object instanceof PyRestObjectPrimitive) { $out['resource'] = $object::RESOURCE_NAME; $out['links'] = array(); $out['links']['self'] = $this->urlGenerator->getItem($object::RESOURCE_NAME, $object->getId()); $out['embeds'] = array(); foreach ($object->getEmbeddables() as $embeddableName => $embedDefinition) { $out['embeds'][$embeddableName] = array(); if (!$embedDefinition instanceof PyRestProperty) { $out['embeds'][$embeddableName]['resource'] = $embedDefinition->getResourceType(); } if ($embedDefinition instanceof PyRestItem) { $out['embeds'][$embeddableName]['type'] = 'item'; } elseif ($embedDefinition instanceof PyRestProperty) { $out['embeds'][$embeddableName]['type'] = 'property'; } else { $out['embeds'][$embeddableName]['type'] = 'collection'; } $out['embeds'][$embeddableName]['links'] = array(); if (!$embedDefinition instanceof PyRestProperty) { $out['embeds'][$embeddableName]['links']['collection'] = $this->urlGenerator->getCollection($embedDefinition->getResourceType()); $out['embeds'][$embeddableName]['links']['nested'] = $this->urlGenerator->getNested($object::RESOURCE_NAME, $object->getId(), $embeddableName); } if ($embedDefinition instanceof PyRestItem || $embedDefinition instanceof PyRestProperty) { $out['embeds'][$embeddableName]['links']['embed'] = $this->urlGenerator->getItem($object::RESOURCE_NAME, $object->getId()) . '?embed=' . $embeddableName; } } } else { $out = new \stdClass(); } return $out; }
public function serializeOne(PyRestObject $object, array $options = array()) { $serialized = $object->transform(); $embeds = $object->getEmbeds(); foreach ($embeds as $embedName => $embed) { $serialized[$embedName] = $this->serializeOne($embed, $options); } if (array_key_exists(Serializer::OPTS_VERBOSITY, $options) && (bool) $options[Serializer::OPTS_VERBOSITY]) { $meta = $this->metaSerializer->serializeOne($object, $options); $serialized = array('data' => $serialized, 'meta' => $meta); } else { $serialized = array('data' => $serialized); } return $serialized; }