ApiPlatform\Core\Metadata\Resource\Factory\ExtractorResourceMetadataFactory::create PHP Method

create() public method

public create ( string $resourceClass ) : ResourceMetadata
$resourceClass string
return ApiPlatform\Core\Metadata\Resource\ResourceMetadata
    public function create(string $resourceClass) : ResourceMetadata
    {
        $parentResourceMetadata = null;
        if ($this->decorated) {
            try {
                $parentResourceMetadata = $this->decorated->create($resourceClass);
            } catch (ResourceClassNotFoundException $resourceNotFoundException) {
                // Ignore not found exception from decorated factories
            }
        }
        if (!class_exists($resourceClass) || !($resource = $this->extractor->getResources()[$resourceClass] ?? false)) {
            return $this->handleNotFound($parentResourceMetadata, $resourceClass);
        }
        return $this->update($parentResourceMetadata ?: new ResourceMetadata(), $resource);
    }

Usage Example

 /**
  * @dataProvider resourceMetadataProvider
  */
 public function testYamlExistingParentResourceMetadataFactory(ResourceMetadata $expectedResourceMetadata)
 {
     $configPath = __DIR__ . '/../../../Fixtures/FileConfigurations/resources.yml';
     $decorated = $this->prophesize(ResourceMetadataFactoryInterface::class);
     $decorated->create(FileConfigDummy::class)->willReturn($expectedResourceMetadata)->shouldBeCalled();
     $resourceMetadataFactory = new ExtractorResourceMetadataFactory(new YamlExtractor([$configPath]), $decorated->reveal());
     $resourceMetadata = $resourceMetadataFactory->create(FileConfigDummy::class);
     $this->assertEquals($expectedResourceMetadata, $resourceMetadata);
 }
ExtractorResourceMetadataFactory