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; }