/** * {@inheritdoc} */ public function loadMetadataForClass(\ReflectionClass $class) { $annotations = $this->reader->getClassAnnotations($class); if (0 === count($annotations)) { return null; } $classMetadata = new ClassMetadata($class->getName()); $classMetadata->fileResources[] = $class->getFileName(); foreach ($annotations as $annotation) { if ($annotation instanceof Annotation\Resource) { // auto transform type from class name if (!$annotation->type) { $annotation->type = String::dasherize($class->getShortName()); } $classMetadata->setResource(new Resource($annotation->type, $annotation->showLinkSelf)); } } $classProperties = $class->getProperties(); foreach ($classProperties as $property) { $annotations = $this->reader->getPropertyAnnotations($property); foreach ($annotations as $annotation) { if ($annotation instanceof Annotation\Id) { $classMetadata->setIdField($property->getName()); } else { if ($annotation instanceof Annotation\Relationship) { $classMetadata->addRelationship(new Relationship($property->getName(), $annotation->includeByDefault, $annotation->showLinkSelf, $annotation->showLinkRelated)); } } } } return $classMetadata; }
/** * @param array $config * @param \ReflectionClass $class * @return Resource */ protected function parseResource(array $config, \ReflectionClass $class) { if (isset($config['resource'])) { if (isset($config['resource']['type'])) { return new Resource($config['resource']['type'], true); } } return new Resource(String::dasherize($class->getShortName()), true); }