Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }