ApiPlatform\Core\Api\ResourceClassResolver::getResourceClass PHP Method

getResourceClass() public method

public getResourceClass ( $value, string $resourceClass = null, boolean $strict = false ) : string
$resourceClass string
$strict boolean
return string
    public function getResourceClass($value, string $resourceClass = null, bool $strict = false) : string
    {
        if (is_object($value) && !$value instanceof PaginatorInterface) {
            $typeToFind = $type = $this->getObjectClass($value);
            if (null === $resourceClass) {
                $resourceClass = $typeToFind;
            }
        } elseif (null === $resourceClass) {
            throw new InvalidArgumentException(sprintf('No resource class found.'));
        } else {
            $typeToFind = $type = $resourceClass;
        }
        if ($strict && isset($type) && $resourceClass !== $type || !$this->isResourceClass($typeToFind)) {
            if (is_subclass_of($type, $resourceClass) && $this->isResourceClass($resourceClass)) {
                return $type;
            }
            throw new InvalidArgumentException(sprintf('No resource class found for object of type "%s"', $typeToFind));
        }
        return $resourceClass;
    }

Usage Example

 public function testGetResourceClassWithChildResource()
 {
     $resourceNameCollectionFactoryProphecy = $this->prophesize(ResourceNameCollectionFactoryInterface::class);
     $resourceNameCollectionFactoryProphecy->create()->willReturn(new ResourceNameCollection([DummyTableInheritance::class]))->shouldBeCalled();
     $t = new DummyTableInheritanceChild();
     $resourceClassResolver = new ResourceClassResolver($resourceNameCollectionFactoryProphecy->reveal());
     $this->assertEquals($resourceClassResolver->getResourceClass($t, DummyTableInheritance::class), DummyTableInheritanceChild::class);
 }