ApiPlatform\Core\Bridge\NelmioApiDoc\Parser\ApiPlatformParser::parse PHP Метод

parse() публичный метод

public parse ( array $item ) : array
$item array
Результат array
    public function parse(array $item) : array
    {
        list($io, $resourceClass, $operationName) = explode(':', $item['class'], 3);
        $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass);
        $classOperations = $this->getGroupsForItemAndCollectionOperation($resourceMetadata, $operationName, $io);
        if (!empty($classOperations['serializer_groups'])) {
            return $this->getPropertyMetadata($resourceMetadata, $resourceClass, $io, [], $classOperations);
        }
        return $this->parseResource($resourceMetadata, $resourceClass, $io);
    }

Usage Example

Пример #1
0
 public function testParseWithNameConverter()
 {
     $resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class);
     $resourceMetadataFactoryProphecy->create(Dummy::class)->willReturn(new ResourceMetadata('dummy', 'dummy', null, [], []))->shouldBeCalled();
     $resourceMetadataFactory = $resourceMetadataFactoryProphecy->reveal();
     $propertyNameCollectionFactoryProphecy = $this->prophesize(PropertyNameCollectionFactoryInterface::class);
     $propertyNameCollectionFactoryProphecy->create(Dummy::class, Argument::cetera())->willReturn(new PropertyNameCollection(['nameConverted']))->shouldBeCalled();
     $propertyNameCollectionFactory = $propertyNameCollectionFactoryProphecy->reveal();
     $propertyMetadataFactoryProphecy = $this->prophesize(PropertyMetadataFactoryInterface::class);
     $nameConvertedPropertyMetadata = (new PropertyMetadata())->withType(new Type(Type::BUILTIN_TYPE_STRING, true))->withDescription('A converted name')->withReadable(true)->withWritable(true)->withRequired(false);
     $propertyMetadataFactoryProphecy->create(Dummy::class, 'nameConverted')->willReturn($nameConvertedPropertyMetadata)->shouldBeCalled();
     $propertyMetadataFactory = $propertyMetadataFactoryProphecy->reveal();
     $nameConverterProphecy = $this->prophesize(NameConverterInterface::class);
     $nameConverterProphecy->normalize('nameConverted')->willReturn('name_converted')->shouldBeCalled();
     $nameConverter = $nameConverterProphecy->reveal();
     $apiPlatformParser = new ApiPlatformParser($resourceMetadataFactory, $propertyNameCollectionFactory, $propertyMetadataFactory, $nameConverter);
     $actual = $apiPlatformParser->parse(['class' => sprintf('%s:%s:%s', ApiPlatformParser::OUT_PREFIX, Dummy::class, 'get')]);
     $this->assertEquals(['name_converted' => ['dataType' => DataTypes::STRING, 'required' => false, 'description' => 'A converted name', 'readonly' => false]], $actual);
 }