/** * @param \ReflectionClass $class * @return FormMetadata */ private function getClassFormFields(\ReflectionClass $class) { $metadata = new FormMetadata(); $reader = new \Doctrine\Common\Annotations\AnnotationReader(); /** @var \ReflectionProperty[] $properties */ $properties = $class->getProperties(); foreach ($properties as $property) { $field = $reader->getPropertyAnnotation($property, 'Corleonis\\FormMetadataBundle\\Configuration\\Field'); $fieldGroup = $reader->getPropertyAnnotation($property, 'Corleonis\\FormMetadataBundle\\Configuration\\FieldGroup'); $formType = $reader->getPropertyAnnotation($property, 'Corleonis\\FormMetadataBundle\\Configuration\\FormType'); $fieldEntity = $reader->getPropertyAnnotation($property, 'Corleonis\\FormMetadataBundle\\Configuration\\FieldEntity'); // prepare the option fields for our field if ($field && $field->value) { $preparer = FieldOptionPreparerFactory::get($field->value); if ($preparer) { $preparer->prepare($field); } } if (!empty($fieldGroup) && !empty($field)) { if (empty($field->name)) { $field->name = $property->getName(); } $metadata->addGroup($fieldGroup, $field); } elseif (!empty($field)) { if (empty($field->name)) { $field->name = $property->getName(); } $metadata->addField($field); } if (!empty($formType)) { if (empty($field->name)) { $formType->name = $property->getName(); } $metadata->addFormType($formType); } if (!empty($fieldEntity)) { if (empty($field->name)) { $fieldEntity->name = $property->getName(); } $metadata->addFieldEntity($fieldEntity); } } return $metadata; }
/** * @param LoadClassMetadataEventArgs $eventArgs */ public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) { $reader = new \Doctrine\Common\Annotations\AnnotationReader(); $meta = $eventArgs->getClassMetadata(); foreach ($meta->getReflectionClass()->getProperties() as $property) { if ($meta->isMappedSuperclass && !$property->isPrivate() || $meta->isInheritedField($property->name) || isset($meta->associationMappings[$property->name]['inherited'])) { continue; } /** @var $annotation \Snowcap\ImBundle\Doctrine\Mapping\Mogrify */ if ($annotation = $reader->getPropertyAnnotation($property, 'Snowcap\\ImBundle\\Doctrine\\Mapping\\Mogrify')) { $field = $property->getName(); $this->config[$meta->getTableName()]['fields'][$field] = array('property' => $property, 'params' => $annotation->params); } } }
/** * Read the entity and create an associated metadata * @param $entity * @return null|FormMetadata */ public function getMetadata($entity) { $metadata = new FormMetadata(); $reader = new \Doctrine\Common\Annotations\AnnotationReader(); $reflectionClass = new \ReflectionClass(get_class($entity)); while (is_object($reflectionClass)) { $properties = $reflectionClass->getProperties(); foreach ($properties as $property) { $field = $reader->getPropertyAnnotation($property, 'FlintLabs\\Bundle\\FormMetadataBundle\\Configuration\\Field'); if (!empty($field)) { if (empty($field->name)) { $field->name = $property->getName(); } $metadata->addField($field); } } $reflectionClass = $reflectionClass->getParentClass(); } return $metadata; }
public function getMetadata($className) { $reflClass = new \ReflectionClass($className); $reader = new \Doctrine\Common\Annotations\AnnotationReader(); $metadata = new ElementMetadata(); $metadata->class = $className; foreach ($reflClass->getProperties() as $reflProp) { $annot = $reader->getPropertyAnnotation($reflProp, 'Broda\\Component\\Rest\\Annotation\\Client\\Identifier'); if (null !== $annot) { $metadata->identifier = $reflProp->getName(); break; // o resto dos campos são ignorados } } if (!$metadata->identifier) { if (!$reflClass->hasProperty('id')) { throw new \RuntimeException(sprintf('A classe %s precisa de um identifier ' . '(ou "id" ou uma propriedade com a anotação @Identifier)', $className)); } $metadata->identifier = 'id'; } return $metadata; }