Hateoas\Configuration\Metadata\Driver\ExtensionDriver::loadMetadataForClass PHP Method

loadMetadataForClass() public method

public loadMetadataForClass ( ReflectionClass $class )
$class ReflectionClass
    public function loadMetadataForClass(\ReflectionClass $class)
    {
        $metadata = $this->delegate->loadMetadataForClass($class);
        $newMetadata = false;
        if (empty($this->extensions)) {
            return $metadata;
        }
        if (null === $metadata) {
            $metadata = new ClassMetadata($class->getName());
            $newMetadata = true;
        }
        foreach ($this->extensions as $extension) {
            $extension->decorate($metadata);
        }
        if ($newMetadata && count($metadata->getRelations()) < 1 && count($metadata->getRelationProviders()) < 1) {
            $metadata = null;
        }
        return $metadata;
    }

Usage Example

 public function testDelegateReturnsNullAndExtensionsAddRelations()
 {
     $reflectionClass = new \ReflectionClass(get_class($this));
     $extensionProphecy = $this->prophesize('Hateoas\\Configuration\\Metadata\\ConfigurationExtensionInterface');
     $extensionProphecy->decorate(Argument::type('Hateoas\\Configuration\\Metadata\\ClassMetadataInterface'))->will(function ($args) {
         $args[0]->addRelation(new Relation('foo', 'bar'));
     })->shouldBeCalledTimes(1);
     $delegateDriverProphecy = $this->prophesize('Metadata\\Driver\\DriverInterface');
     $delegateDriverProphecy->loadMetadataForClass($reflectionClass)->willReturn(null);
     $extensionDriver = new ExtensionDriver($delegateDriverProphecy->reveal(), array($extensionProphecy->reveal()));
     $this->assertInstanceOf('Hateoas\\Configuration\\Metadata\\ClassMetadataInterface', $extensionDriver->loadMetadataForClass($reflectionClass));
 }