/** * Gets metadata for the given version of an entity. * * @param string $className The FQCN of an entity * @param string $version The version of a config * @param string[] $requestType The type of API request, for example "rest", "soap", "odata", etc. * @param MetadataExtraInterface[] $extras Additional metadata information * @param array|null $config The configuration of an entity * * @return EntityMetadata|null */ public function getMetadata($className, $version, array $requestType = [], array $extras = [], $config = null) { if (empty($className)) { throw new \InvalidArgumentException('$className must not be empty.'); } /** @var MetadataContext $context */ $context = $this->processor->createContext(); $context->setClassName($className); $context->setVersion($version); if (!empty($requestType)) { $context->setRequestType($requestType); } if (!empty($extras)) { $context->setExtras($extras); } if (!empty($config)) { $context->setConfig($config); } $this->processor->process($context); $result = null; if ($context->hasResult()) { $result = $context->getResult(); } return $result; }
/** * Gets metadata for the given version of an entity. * * @param string $className The FQCN of an entity * @param string $version The version of a config * @param string[] $requestType The type of API request, for example "rest", "soap", "odata", etc. * @param MetadataExtraInterface[] $extras Additional metadata information * @param array|null $config The configuration of an entity * * @return EntityMetadata|null */ public function getMetadata($className, $version, array $requestType, array $extras = [], $config = null) { if (empty($className)) { throw new \InvalidArgumentException('$className must not be empty.'); } $cacheKey = implode('', $requestType) . $version . $className; if (array_key_exists($cacheKey, $this->cache)) { return $this->cache[$cacheKey]; } /** @var MetadataContext $context */ $context = $this->processor->createContext(); $context->setVersion($version); $context->setRequestType($requestType); $context->setClassName($className); $context->setExtras($extras); if (!empty($config)) { $context->setConfig($config); } $this->processor->process($context); $result = null; if ($context->hasResult()) { $result = $context->getResult(); } $this->cache[$cacheKey] = $result; return $result; }