/** * @param ResourceDefinition $resourceDefinition * @param string $action * @param string $cardinality * @return $this */ public function addResourceDefinition(ResourceDefinition $resourceDefinition, string $action, string $cardinality = Cardinality::ONE) { $name = $this->entityNameLibrary->toPretty($resourceDefinition->getEntityClassName()) . '_' . $action; if (!array_key_exists($name, $this->schemas)) { $this->schemas[$name] = null; // Set key to avoid circular references $this->schemas[$name] = $resourceDefinition->toSwagger($this, $action); } $refId = '#/definitions/' . $name; if ($cardinality === Cardinality::ONE) { return $refId; } else { return $this->addItemListDefinition($this->entityNameLibrary->toPretty($resourceDefinition->getEntityClassName()), $refId, $action); } }
/** * @param ResourceDefinition $resourceDefinition * @param $entity * @throws InvalidEntityException */ private function checkEntityType(ResourceDefinition $resourceDefinition, $entity) { $entityClassName = $resourceDefinition->getEntityClassName(); if (!$entity instanceof $entityClassName) { if (is_object($entity)) { $providedType = get_class($entity); } else { $providedType = gettype($entity); } throw new InvalidEntityException("ResourceTransformer expects {$entityClassName}, " . $providedType . " given."); } }