Пример #1
0
 /**
  * Load metadata class
  *
  * @param \ReflectionClass $class
  * @return ClassMetadata
  */
 public function loadMetadataForClass(\ReflectionClass $class)
 {
     $classMetadata = new ClassMetadata($class->name);
     $classMetadata->fileResources[] = $class->getFileName();
     foreach ($this->reader->getClassAnnotations($class) as $annotation) {
         if ($annotation instanceof NamespaceNode) {
             $classMetadata->addGraphNamespace($annotation);
         }
         if ($annotation instanceof GraphNode) {
             $classMetadata->addGraphMetadata($annotation, new MetadataValue($annotation->value));
         }
     }
     foreach ($class->getProperties() as $property) {
         foreach ($this->reader->getPropertyAnnotations($property) as $annotation) {
             if ($annotation instanceof GraphNode) {
                 $classMetadata->addGraphMetadata($annotation, new PropertyMetadata($class->name, $property->name));
             }
         }
     }
     foreach ($class->getMethods() as $method) {
         foreach ($this->reader->getMethodAnnotations($method) as $annotation) {
             if ($annotation instanceof GraphNode) {
                 $classMetadata->addGraphMetadata($annotation, new MethodMetadata($class->name, $method->name));
             }
         }
     }
     return $classMetadata;
 }
Пример #2
0
 /**
  * Parse OpenGraph node properties
  *
  * @param \ReflectionClass $class
  * @param ClassMetadata    $metadata
  * @param mixed            $config
  */
 protected function parseNodes(\ReflectionClass $class, ClassMetadata $metadata, $config)
 {
     if (!isset($config['nodes'])) {
         return;
     }
     if (!is_array($config)) {
         throw new \RuntimeException(sprintf('Invalid YAML configuration for "%s" : "properties" property need to be an array.', $metadata->name));
     }
     foreach ($config['nodes'] as $property => $nodeProperties) {
         foreach ($nodeProperties as $nodeProperty) {
             if (!isset($nodeProperty['namespace']) || !isset($nodeProperty['tag'])) {
                 throw new \RuntimeException(sprintf('Invalid YAML configuration for "%s" : "namespace" and "tag" are required.', $metadata->name));
             }
             $node = new Node(['namespace' => $nodeProperty['namespace'], 'tag' => $nodeProperty['tag']]);
             if ($class->hasProperty($property)) {
                 $metadata->addGraphMetadata($node, new PropertyMetadata($class->name, $property));
             }
             if ($class->hasMethod($property)) {
                 $metadata->addGraphMetadata($node, new MethodMetadata($class->name, $property));
             }
         }
     }
 }