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

create() public method

public create ( ) : ResourceNameCollection
return ApiPlatform\Core\Metadata\Resource\ResourceNameCollection
    public function create() : ResourceNameCollection
    {
        try {
            $cacheItem = $this->cacheItemPool->getItem(self::CACHE_KEY);
            if ($cacheItem->isHit()) {
                return $cacheItem->get();
            }
        } catch (CacheException $e) {
            // do nothing
        }
        $resourceNameCollection = $this->decorated->create();
        if (!isset($cacheItem)) {
            return $resourceNameCollection;
        }
        $cacheItem->set($resourceNameCollection);
        $this->cacheItemPool->save($cacheItem);
        return $resourceNameCollection;
    }

Usage Example

 public function testCreateWithGetCacheItemThrowsCacheException()
 {
     $decoratedResourceNameCollectionFactory = $this->prophesize(ResourceNameCollectionFactoryInterface::class);
     $decoratedResourceNameCollectionFactory->create()->willReturn(new ResourceNameCollection([Dummy::class]))->shouldBeCalled();
     $cacheException = $this->prophesize(CacheException::class);
     $cacheException->willExtend(\Exception::class);
     $cacheItemPool = $this->prophesize(CacheItemPoolInterface::class);
     $cacheItemPool->getItem(CachedResourceNameCollectionFactory::CACHE_KEY)->willThrow($cacheException->reveal())->shouldBeCalled();
     $cachedResourceNameCollectionFactory = new CachedResourceNameCollectionFactory($cacheItemPool->reveal(), $decoratedResourceNameCollectionFactory->reveal());
     $resultedResourceNameCollection = $cachedResourceNameCollectionFactory->create();
     $this->assertInstanceOf(ResourceNameCollection::class, $resultedResourceNameCollection);
     $this->assertEquals(new ResourceNameCollection([Dummy::class]), $resultedResourceNameCollection);
 }
CachedResourceNameCollectionFactory