Inheritance: implements Neomerx\JsonApi\Contracts\Document\DocumentInterface, implements Psr\Log\LoggerAwareInterface, use trait Psr\Log\LoggerAwareTrait
 /**
  * Convert resource object to array.
  *
  * @param ResourceObjectInterface $resource
  * @param array                   $resourceLinks
  * @param mixed                   $meta
  * @param bool                    $isShowAttributes
  *
  * @return array
  */
 private function convertResourceToArray(ResourceObjectInterface $resource, $resourceLinks, $meta, $isShowAttributes)
 {
     $representation = [Document::KEYWORD_TYPE => $resource->getType(), Document::KEYWORD_ID => $resource->getId()];
     $attributes = $resource->getAttributes();
     // "type" and "id" are reserved keywords and cannot be used as resource object attributes
     $isOk = isset($attributes[Document::KEYWORD_TYPE]) === false;
     $isOk ?: Exceptions::throwInvalidArgument('attributes', Document::KEYWORD_TYPE);
     $isOk = isset($attributes[Document::KEYWORD_ID]) === false;
     $isOk ?: Exceptions::throwInvalidArgument('attributes', Document::KEYWORD_ID);
     if ($isShowAttributes === true && empty($attributes) === false) {
         $representation[Document::KEYWORD_ATTRIBUTES] = $attributes;
     }
     // reserve placeholder for relationships, otherwise it would be added after
     // links and meta which is not visually beautiful
     $representation[Document::KEYWORD_RELATIONSHIPS] = null;
     if (empty($resourceLinks) === false) {
         foreach ($resourceLinks as $linkName => $link) {
             /** @var LinkInterface $link */
             $representation[Document::KEYWORD_LINKS][$linkName] = $this->getLinkRepresentation($this->document->getUrlPrefix(), $link);
         }
     }
     if ($meta !== null) {
         $representation[Document::KEYWORD_META] = $meta;
     }
     return $representation;
 }
 /**
  * Convert resource object to array.
  *
  * @param ResourceObjectInterface $resource
  * @param bool                    $isShowSelf
  * @param mixed                   $meta
  * @param bool                    $isShowAttributes
  *
  * @return array
  */
 private function convertResourceToArray(ResourceObjectInterface $resource, $isShowSelf, $meta, $isShowAttributes)
 {
     $representation = [Document::KEYWORD_TYPE => $resource->getType(), Document::KEYWORD_ID => $resource->getId()];
     $attributes = $resource->getAttributes();
     assert('isset($attributes[\'' . Document::KEYWORD_TYPE . '\']) === false && ' . 'isset($attributes[\'' . Document::KEYWORD_ID . '\']) === false', '"type" and "id" are reserved keywords and cannot be used as resource object attributes');
     if ($isShowAttributes === true && empty($attributes) === false) {
         $representation[Document::KEYWORD_ATTRIBUTES] = $attributes;
     }
     // reserve placeholder for relationships, otherwise it would be added after
     // links and meta which is not visually beautiful
     $representation[Document::KEYWORD_RELATIONSHIPS] = null;
     if ($isShowSelf === true) {
         $representation[Document::KEYWORD_LINKS][Document::KEYWORD_SELF] = $this->getLinkRepresentation($this->document->getUrlPrefix(), $resource->getSelfSubLink());
     }
     if ($meta !== null) {
         $representation[Document::KEYWORD_META] = $meta;
     }
     return $representation;
 }
Example #3
0
 /**
  * @inheritdoc
  */
 public function createDocument()
 {
     $document = new Document();
     $document->setLogger($this->logger);
     return $document;
 }