/** * @param ContainerInterface $container * @param object|array|Iterator|null $data * @param EncodingParametersInterface|null $parameters * * @return string */ protected function encodeDataInternal(ContainerInterface $container, $data, EncodingParametersInterface $parameters = null) { $dataAnalyzer = $this->factory->createAnalyzer($container); $parameters = $this->getEncodingParameters($data, $dataAnalyzer, $parameters); $docWriter = $this->factory->createDocument(); $parserManager = $this->factory->createManager($parameters); $interpreter = $this->factory->createReplyInterpreter($docWriter, $parameters); $parser = $this->factory->createParser($dataAnalyzer, $parserManager); $this->encoderOptions !== null && $this->encoderOptions->getUrlPrefix() !== null ? $docWriter->setUrlPrefix($this->encoderOptions->getUrlPrefix()) : null; foreach ($parser->parse($data) as $reply) { $interpreter->handle($reply); } if ($this->meta !== null) { $docWriter->setMetaToDocument($this->meta); } if (empty($this->links) === false) { $docWriter->setDocumentLinks($this->links); } if ($this->isAddJsonApiVersion === true) { $docWriter->addJsonApiVersion(self::JSON_API_VERSION, $this->jsonApiVersionMeta); } elseif ($this->encoderOptions !== null && $this->encoderOptions->isShowVersionInfo() === true) { $docWriter->addJsonApiVersion(self::JSON_API_VERSION, $this->encoderOptions->getVersionMeta()); } $result = $this->encodeToJson($docWriter->getDocument()); $this->resetEncodeParameters(); return $result; }
/** * @param ContainerInterface $container * @param object|array|Iterator|null $data * @param EncodingParametersInterface|null $parameters * * @return string */ protected function encodeDataInternal(ContainerInterface $container, $data, EncodingParametersInterface $parameters = null) { if (is_array($data) === false && is_object($data) === false && $data !== null && !$data instanceof Iterator) { throw new InvalidArgumentException('data'); } $docWriter = $this->factory->createDocument(); $paramAnalyzer = $this->createParametersAnalyzer($container, $parameters); $parserManager = $this->factory->createManager($paramAnalyzer); $interpreter = $this->factory->createReplyInterpreter($docWriter, $paramAnalyzer); $parser = $this->factory->createParser($container, $parserManager); $this->encoderOptions !== null && $this->encoderOptions->getUrlPrefix() !== null ? $docWriter->setUrlPrefix($this->encoderOptions->getUrlPrefix()) : null; foreach ($parser->parse($data) as $reply) { $interpreter->handle($reply); } if ($this->meta !== null) { $docWriter->setMetaToDocument($this->meta); } if (empty($this->links) === false) { $docWriter->setDocumentLinks($this->links); } if ($this->isAddJsonApiVersion === true) { $docWriter->addJsonApiVersion(self::JSON_API_VERSION, $this->jsonApiVersionMeta); } $result = $this->encodeToJson($docWriter->getDocument()); $this->resetEncodeParameters(); return $result; }