diff --git a/composer.json b/composer.json index 79f5fd57541..08ea64e07dd 100644 --- a/composer.json +++ b/composer.json @@ -72,6 +72,7 @@ "symfony/form": "^3.4 || ^4.4 || ^5.1", "symfony/framework-bundle": "^4.4 || ^5.1", "symfony/http-client": "^4.4 || ^5.1", + "symfony/intl": "^3.4 || ^4.4 || ^5.1", "symfony/mercure-bundle": "*", "symfony/messenger": "^4.4 || ^5.1", "symfony/phpunit-bridge": "^5.1.7", diff --git a/src/Bridge/RamseyUuid/Serializer/UuidDenormalizer.php b/src/Bridge/RamseyUuid/Serializer/UuidDenormalizer.php index 8a8ff7abe63..a3ea6a812d5 100644 --- a/src/Bridge/RamseyUuid/Serializer/UuidDenormalizer.php +++ b/src/Bridge/RamseyUuid/Serializer/UuidDenormalizer.php @@ -21,6 +21,11 @@ final class UuidDenormalizer implements DenormalizerInterface { + /** + * @param mixed|null $format + * + * @return UuidInterface + */ public function denormalize($data, $type, $format = null, array $context = []) { try { @@ -30,7 +35,7 @@ public function denormalize($data, $type, $format = null, array $context = []) } } - public function supportsDenormalization($data, $type, $format = null) + public function supportsDenormalization($data, $type, $format = null): bool { return \is_string($data) && is_a($type, UuidInterface::class, true); } diff --git a/src/Bridge/Symfony/Bundle/Command/GraphQlExportCommand.php b/src/Bridge/Symfony/Bundle/Command/GraphQlExportCommand.php index 2b2402fc54a..4311cd9f1ec 100644 --- a/src/Bridge/Symfony/Bundle/Command/GraphQlExportCommand.php +++ b/src/Bridge/Symfony/Bundle/Command/GraphQlExportCommand.php @@ -55,7 +55,7 @@ protected function configure(): void /** * {@inheritdoc} */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); diff --git a/src/Bridge/Symfony/Bundle/Command/OpenApiCommand.php b/src/Bridge/Symfony/Bundle/Command/OpenApiCommand.php index f117899f705..9a7c8e46c1f 100644 --- a/src/Bridge/Symfony/Bundle/Command/OpenApiCommand.php +++ b/src/Bridge/Symfony/Bundle/Command/OpenApiCommand.php @@ -44,7 +44,7 @@ public function __construct(OpenApiFactoryInterface $openApiFactory, NormalizerI /** * {@inheritdoc} */ - protected function configure() + protected function configure(): void { $this ->setDescription('Dump the Open API documentation') @@ -57,7 +57,7 @@ protected function configure() /** * {@inheritdoc} */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { // Backwards compatibility if (2 === $specVersion = (int) $input->getOption('spec-version')) { diff --git a/src/Bridge/Symfony/Bundle/Command/SwaggerCommand.php b/src/Bridge/Symfony/Bundle/Command/SwaggerCommand.php index a6b4b386e6b..62f0eedff07 100644 --- a/src/Bridge/Symfony/Bundle/Command/SwaggerCommand.php +++ b/src/Bridge/Symfony/Bundle/Command/SwaggerCommand.php @@ -66,7 +66,7 @@ public function __construct(NormalizerInterface $normalizer, ResourceNameCollect /** * {@inheritdoc} */ - protected function configure() + protected function configure(): void { $this ->setDescription('Dump the Swagger v2 documentation') @@ -79,7 +79,7 @@ protected function configure() /** * {@inheritdoc} */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); diff --git a/src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php b/src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php index c860f6f02be..d226fe0fbcf 100644 --- a/src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php +++ b/src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php @@ -48,7 +48,7 @@ final class Configuration implements ConfigurationInterface /** * {@inheritdoc} */ - public function getConfigTreeBuilder() + public function getConfigTreeBuilder(): TreeBuilder { if (method_exists(TreeBuilder::class, 'getRootNode')) { $treeBuilder = new TreeBuilder('api_platform'); diff --git a/src/Bridge/Symfony/Routing/Router.php b/src/Bridge/Symfony/Routing/Router.php index 51dfe827a2e..0fb6acd0bdf 100644 --- a/src/Bridge/Symfony/Routing/Router.php +++ b/src/Bridge/Symfony/Routing/Router.php @@ -46,7 +46,7 @@ public function __construct(RouterInterface $router, int $urlGenerationStrategy /** * {@inheritdoc} */ - public function setContext(RequestContext $context) + public function setContext(RequestContext $context): void { $this->router->setContext($context); } @@ -54,7 +54,7 @@ public function setContext(RequestContext $context) /** * {@inheritdoc} */ - public function getContext() + public function getContext(): RequestContext { return $this->router->getContext(); } @@ -62,7 +62,7 @@ public function getContext() /** * {@inheritdoc} */ - public function getRouteCollection() + public function getRouteCollection(): \Symfony\Component\Routing\RouteCollection { return $this->router->getRouteCollection(); } @@ -70,11 +70,11 @@ public function getRouteCollection() /** * {@inheritdoc} */ - public function match($pathInfo) + public function match($pathInfo): array { $baseContext = $this->router->getContext(); $baseUrl = $baseContext->getBaseUrl(); - if ($baseUrl === substr($pathInfo, 0, \strlen($baseUrl))) { + if (0 === strpos($pathInfo, $baseUrl)) { $pathInfo = substr($pathInfo, \strlen($baseUrl)); } @@ -101,7 +101,7 @@ public function match($pathInfo) /** * {@inheritdoc} */ - public function generate($name, $parameters = [], $referenceType = null) + public function generate($name, $parameters = [], $referenceType = null): string { return $this->router->generate($name, $parameters, self::CONST_MAP[$referenceType ?? $this->urlGenerationStrategy]); } diff --git a/src/GraphQl/Serializer/ItemNormalizer.php b/src/GraphQl/Serializer/ItemNormalizer.php index e7c5e6c8a0c..2491f48ce14 100644 --- a/src/GraphQl/Serializer/ItemNormalizer.php +++ b/src/GraphQl/Serializer/ItemNormalizer.php @@ -64,6 +64,8 @@ public function supportsNormalization($data, $format = null): bool * {@inheritdoc} * * @throws UnexpectedValueException + * + * @return array|string|int|float|bool|\ArrayObject|null */ public function normalize($object, $format = null, array $context = []) { @@ -103,6 +105,8 @@ public function supportsDenormalization($data, $type, $format = null): bool /** * {@inheritdoc} + * + * @return array|bool */ protected function getAllowedAttributes($classOrObject, array $context, $attributesAsString = false) { diff --git a/src/JsonSchema/Command/JsonSchemaGenerateCommand.php b/src/JsonSchema/Command/JsonSchemaGenerateCommand.php index c492b6f3528..c2ba608fbed 100644 --- a/src/JsonSchema/Command/JsonSchemaGenerateCommand.php +++ b/src/JsonSchema/Command/JsonSchemaGenerateCommand.php @@ -47,7 +47,7 @@ public function __construct(SchemaFactoryInterface $schemaFactory, array $format /** * {@inheritdoc} */ - protected function configure() + protected function configure(): void { $this ->setDescription('Generates the JSON Schema for a resource operation.') @@ -61,7 +61,7 @@ protected function configure() /** * {@inheritdoc} */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); diff --git a/src/Metadata/Property/PropertyNameCollection.php b/src/Metadata/Property/PropertyNameCollection.php index 785a6ef8919..c938b7d68b6 100644 --- a/src/Metadata/Property/PropertyNameCollection.php +++ b/src/Metadata/Property/PropertyNameCollection.php @@ -36,7 +36,7 @@ public function __construct(array $properties = []) /** * {@inheritdoc} */ - public function getIterator() + public function getIterator(): \Traversable { return new \ArrayIterator($this->properties); } @@ -44,7 +44,7 @@ public function getIterator() /** * {@inheritdoc} */ - public function count() + public function count(): int { return \count($this->properties); } diff --git a/src/Serializer/AbstractItemNormalizer.php b/src/Serializer/AbstractItemNormalizer.php index 3e41e9da00d..739913ff4b0 100644 --- a/src/Serializer/AbstractItemNormalizer.php +++ b/src/Serializer/AbstractItemNormalizer.php @@ -96,6 +96,8 @@ public function __construct(PropertyNameCollectionFactoryInterface $propertyName /** * {@inheritdoc} + * + * @return bool */ public function supportsNormalization($data, $format = null) { @@ -118,6 +120,8 @@ public function hasCacheableSupportsMethod(): bool * {@inheritdoc} * * @throws LogicException + * + * @return array|string|int|float|bool|\ArrayObject|null */ public function normalize($object, $format = null, array $context = []) { @@ -173,6 +177,8 @@ public function normalize($object, $format = null, array $context = []) /** * {@inheritdoc} + * + * @return bool */ public function supportsDenormalization($data, $type, $format = null) { @@ -260,7 +266,7 @@ public function denormalize($data, $class, $format = null, array $context = []) * * @internal */ - protected function instantiateObject(array &$data, $class, array &$context, \ReflectionClass $reflectionClass, $allowedAttributes, string $format = null) + protected function instantiateObject(array &$data, $class, array &$context, \ReflectionClass $reflectionClass, $allowedAttributes, string $format = null): object { if (null !== $object = $this->extractObjectToPopulate($class, $context, static::OBJECT_TO_POPULATE)) { unset($context[static::OBJECT_TO_POPULATE]); @@ -344,6 +350,8 @@ protected function createConstructorArgument($parameterData, string $key, \Refle * {@inheritdoc} * * Unused in this context. + * + * @return array */ protected function extractAttributes($object, $format = null, array $context = []) { @@ -352,6 +360,8 @@ protected function extractAttributes($object, $format = null, array $context = [ /** * {@inheritdoc} + * + * @return array|bool */ protected function getAllowedAttributes($classOrObject, array $context, $attributesAsString = false) { @@ -378,6 +388,8 @@ protected function getAllowedAttributes($classOrObject, array $context, $attribu /** * {@inheritdoc} + * + * @return bool */ protected function isAllowedAttribute($classOrObject, $attribute, $format = null, array $context = []) { diff --git a/tests/Fixtures/TestBundle/Document/User.php b/tests/Fixtures/TestBundle/Document/User.php index 4a19447c268..48c13565678 100644 --- a/tests/Fixtures/TestBundle/Document/User.php +++ b/tests/Fixtures/TestBundle/Document/User.php @@ -161,7 +161,7 @@ public function getPassword(): ?string return null; } - public function getSalt() + public function getSalt(): ?string { return null; } diff --git a/tests/Fixtures/TestBundle/Entity/User.php b/tests/Fixtures/TestBundle/Entity/User.php index 616b9d4a8d0..be0817142d9 100644 --- a/tests/Fixtures/TestBundle/Entity/User.php +++ b/tests/Fixtures/TestBundle/Entity/User.php @@ -164,7 +164,7 @@ public function getPassword(): ?string return null; } - public function getSalt() + public function getSalt(): ?string { return null; } diff --git a/tests/Fixtures/TestBundle/Serializer/Denormalizer/SerializableResourceDenormalizer.php b/tests/Fixtures/TestBundle/Serializer/Denormalizer/SerializableResourceDenormalizer.php index 9d2e8f52df1..295411452bc 100644 --- a/tests/Fixtures/TestBundle/Serializer/Denormalizer/SerializableResourceDenormalizer.php +++ b/tests/Fixtures/TestBundle/Serializer/Denormalizer/SerializableResourceDenormalizer.php @@ -37,7 +37,7 @@ public function denormalize($data, $class, $format = null, array $context = []) /** * {@inheritdoc} */ - public function supportsDenormalization($data, $type, $format = null) + public function supportsDenormalization($data, $type, $format = null): bool { return 'json' === $format && SerializableResource::class === $type && \is_array($data); } diff --git a/tests/Fixtures/TestBundle/Serializer/NameConverter/CustomConverter.php b/tests/Fixtures/TestBundle/Serializer/NameConverter/CustomConverter.php index 11d8be1806e..74489a5cf9f 100644 --- a/tests/Fixtures/TestBundle/Serializer/NameConverter/CustomConverter.php +++ b/tests/Fixtures/TestBundle/Serializer/NameConverter/CustomConverter.php @@ -21,12 +21,12 @@ */ class CustomConverter extends CamelCaseToSnakeCaseNameConverter { - public function normalize($propertyName) + public function normalize($propertyName): string { return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName; } - public function denormalize($propertyName) + public function denormalize($propertyName): string { return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName; } diff --git a/tests/Fixtures/TestBundle/Serializer/Normalizer/OverrideDocumentationNormalizer.php b/tests/Fixtures/TestBundle/Serializer/Normalizer/OverrideDocumentationNormalizer.php index 69da8eb7281..30079d7f499 100644 --- a/tests/Fixtures/TestBundle/Serializer/Normalizer/OverrideDocumentationNormalizer.php +++ b/tests/Fixtures/TestBundle/Serializer/Normalizer/OverrideDocumentationNormalizer.php @@ -28,6 +28,11 @@ public function __construct(NormalizerInterface $documentationNormalizer) $this->documentationNormalizer = $documentationNormalizer; } + /** + * @param mixed|null $format + * + * @return array|string|int|float|bool|\ArrayObject|null + */ public function normalize($object, $format = null, array $context = []) { $data = $this->documentationNormalizer->normalize($object, $format, $context); @@ -44,7 +49,7 @@ public function normalize($object, $format = null, array $context = []) return $data; } - public function supportsNormalization($data, $format = null) + public function supportsNormalization($data, $format = null): bool { return $this->documentationNormalizer->supportsNormalization($data, $format); }