Skip to content

Commit 603551a

Browse files
authored
fix(metadata): fix missing array cast for RDF types in ApiResource & ApiProperty constructors (api-platform#5000)
1 parent 44ba110 commit 603551a

File tree

2 files changed

+48
-45
lines changed

2 files changed

+48
-45
lines changed

src/Metadata/ApiProperty.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ final class ApiProperty
7979
private $securityPostDenormalize;
8080

8181
/**
82-
* @var string[]
82+
* @var string|string[]|null
8383
*/
8484
private $types;
8585

@@ -171,7 +171,7 @@ public function __construct(
171171
$this->security = $security;
172172
$this->openapiContext = $openapiContext;
173173
$this->securityPostDenormalize = $securityPostDenormalize;
174-
$this->types = $types;
174+
$this->types = null === $types ? null : (array) $types;
175175
$this->builtinTypes = $builtinTypes;
176176
$this->schema = $schema;
177177
$this->initializable = $initializable;

src/Metadata/ApiResource.php

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ class ApiResource
2929
protected $uriTemplate;
3030
protected $shortName;
3131
protected $description;
32+
/**
33+
* @var string|string[]|null
34+
*/
3235
protected $types;
3336
/**
3437
* @var array|mixed|string|null
@@ -121,48 +124,48 @@ class ApiResource
121124
protected $extraProperties;
122125

123126
/**
124-
* @param array|null $types The RDF types of this resource
125-
* @param mixed|null $operations
126-
* @param array|string|null $formats https://api-platform.com/docs/core/content-negotiation/#configuring-formats-for-a-specific-resource-or-operation
127-
* @param array|string|null $inputFormats https://api-platform.com/docs/core/content-negotiation/#configuring-formats-for-a-specific-resource-or-operation
128-
* @param array|string|null $outputFormats https://api-platform.com/docs/core/content-negotiation/#configuring-formats-for-a-specific-resource-or-operation
129-
* @param mixed|null $uriVariables
130-
* @param string|null $routePrefix https://api-platform.com/docs/core/operations/#prefixing-all-routes-of-all-operations
131-
* @param string|null $sunset https://api-platform.com/docs/core/deprecations/#setting-the-sunset-http-header-to-indicate-when-a-resource-or-an-operation-will-be-removed
132-
* @param string|null $deprecationReason https://api-platform.com/docs/core/deprecations/#deprecating-resource-classes-operations-and-properties
133-
* @param array|null $cacheHeaders https://api-platform.com/docs/core/performance/#setting-custom-http-cache-headers
134-
* @param array|null $normalizationContext https://api-platform.com/docs/core/serialization/#using-serialization-groups
135-
* @param array|null $denormalizationContext https://api-platform.com/docs/core/serialization/#using-serialization-groups
136-
* @param string[]|null $hydraContext https://api-platform.com/docs/core/extending-jsonld-context/#hydra
137-
* @param array|null $openapiContext https://api-platform.com/docs/core/openapi/#using-the-openapi-and-swagger-contexts
138-
* @param array|null $validationContext https://api-platform.com/docs/core/validation/#using-validation-groups
139-
* @param string[]|null $filters https://api-platform.com/docs/core/filters/#doctrine-orm-and-mongodb-odm-filters
140-
* @param bool|null $elasticsearch https://api-platform.com/docs/core/elasticsearch/
141-
* @param mixed|null $mercure https://api-platform.com/docs/core/mercure
142-
* @param mixed|null $messenger https://api-platform.com/docs/core/messenger/#dispatching-a-resource-through-the-message-bus
143-
* @param mixed|null $input https://api-platform.com/docs/core/dto/#specifying-an-input-or-an-output-data-representation
144-
* @param mixed|null $output https://api-platform.com/docs/core/dto/#specifying-an-input-or-an-output-data-representation
145-
* @param array|null $order https://api-platform.com/docs/core/default-order/#overriding-default-order
146-
* @param bool|null $fetchPartial https://api-platform.com/docs/core/performance/#fetch-partial
147-
* @param bool|null $forceEager https://api-platform.com/docs/core/performance/#force-eager
148-
* @param bool|null $paginationClientEnabled https://api-platform.com/docs/core/pagination/#for-a-specific-resource-1
149-
* @param bool|null $paginationClientItemsPerPage https://api-platform.com/docs/core/pagination/#for-a-specific-resource-3
150-
* @param bool|null $paginationClientPartial https://api-platform.com/docs/core/pagination/#for-a-specific-resource-6
151-
* @param array|null $paginationViaCursor https://api-platform.com/docs/core/pagination/#cursor-based-pagination
152-
* @param bool|null $paginationEnabled https://api-platform.com/docs/core/pagination/#for-a-specific-resource
153-
* @param bool|null $paginationFetchJoinCollection https://api-platform.com/docs/core/pagination/#controlling-the-behavior-of-the-doctrine-orm-paginator
154-
* @param int|null $paginationItemsPerPage https://api-platform.com/docs/core/pagination/#changing-the-number-of-items-per-page
155-
* @param int|null $paginationMaximumItemsPerPage https://api-platform.com/docs/core/pagination/#changing-maximum-items-per-page
156-
* @param bool|null $paginationPartial https://api-platform.com/docs/core/performance/#partial-pagination
157-
* @param string|null $paginationType https://api-platform.com/docs/core/graphql/#using-the-page-based-pagination
158-
* @param string|null $security https://api-platform.com/docs/core/security
159-
* @param string|null $securityMessage https://api-platform.com/docs/core/security/#configuring-the-access-control-error-message
160-
* @param string|null $securityPostDenormalize https://api-platform.com/docs/core/security/#executing-access-control-rules-after-denormalization
161-
* @param string|null $securityPostDenormalizeMessage https://api-platform.com/docs/core/security/#configuring-the-access-control-error-message
162-
* @param string $securityPostValidation https://api-platform.com/docs/core/security/#executing-access-control-rules-after-validtion
163-
* @param string $securityPostValidationMessage https://api-platform.com/docs/core/security/#configuring-the-access-control-error-message
164-
* @param mixed|null $provider
165-
* @param mixed|null $processor
127+
* @param string|string[]|null $types The RDF types of this resource
128+
* @param mixed|null $operations
129+
* @param array|string|null $formats https://api-platform.com/docs/core/content-negotiation/#configuring-formats-for-a-specific-resource-or-operation
130+
* @param array|string|null $inputFormats https://api-platform.com/docs/core/content-negotiation/#configuring-formats-for-a-specific-resource-or-operation
131+
* @param array|string|null $outputFormats https://api-platform.com/docs/core/content-negotiation/#configuring-formats-for-a-specific-resource-or-operation
132+
* @param mixed|null $uriVariables
133+
* @param string|null $routePrefix https://api-platform.com/docs/core/operations/#prefixing-all-routes-of-all-operations
134+
* @param string|null $sunset https://api-platform.com/docs/core/deprecations/#setting-the-sunset-http-header-to-indicate-when-a-resource-or-an-operation-will-be-removed
135+
* @param string|null $deprecationReason https://api-platform.com/docs/core/deprecations/#deprecating-resource-classes-operations-and-properties
136+
* @param array|null $cacheHeaders https://api-platform.com/docs/core/performance/#setting-custom-http-cache-headers
137+
* @param array|null $normalizationContext https://api-platform.com/docs/core/serialization/#using-serialization-groups
138+
* @param array|null $denormalizationContext https://api-platform.com/docs/core/serialization/#using-serialization-groups
139+
* @param string[]|null $hydraContext https://api-platform.com/docs/core/extending-jsonld-context/#hydra
140+
* @param array|null $openapiContext https://api-platform.com/docs/core/openapi/#using-the-openapi-and-swagger-contexts
141+
* @param array|null $validationContext https://api-platform.com/docs/core/validation/#using-validation-groups
142+
* @param string[]|null $filters https://api-platform.com/docs/core/filters/#doctrine-orm-and-mongodb-odm-filters
143+
* @param bool|null $elasticsearch https://api-platform.com/docs/core/elasticsearch/
144+
* @param mixed|null $mercure https://api-platform.com/docs/core/mercure
145+
* @param mixed|null $messenger https://api-platform.com/docs/core/messenger/#dispatching-a-resource-through-the-message-bus
146+
* @param mixed|null $input https://api-platform.com/docs/core/dto/#specifying-an-input-or-an-output-data-representation
147+
* @param mixed|null $output https://api-platform.com/docs/core/dto/#specifying-an-input-or-an-output-data-representation
148+
* @param array|null $order https://api-platform.com/docs/core/default-order/#overriding-default-order
149+
* @param bool|null $fetchPartial https://api-platform.com/docs/core/performance/#fetch-partial
150+
* @param bool|null $forceEager https://api-platform.com/docs/core/performance/#force-eager
151+
* @param bool|null $paginationClientEnabled https://api-platform.com/docs/core/pagination/#for-a-specific-resource-1
152+
* @param bool|null $paginationClientItemsPerPage https://api-platform.com/docs/core/pagination/#for-a-specific-resource-3
153+
* @param bool|null $paginationClientPartial https://api-platform.com/docs/core/pagination/#for-a-specific-resource-6
154+
* @param array|null $paginationViaCursor https://api-platform.com/docs/core/pagination/#cursor-based-pagination
155+
* @param bool|null $paginationEnabled https://api-platform.com/docs/core/pagination/#for-a-specific-resource
156+
* @param bool|null $paginationFetchJoinCollection https://api-platform.com/docs/core/pagination/#controlling-the-behavior-of-the-doctrine-orm-paginator
157+
* @param int|null $paginationItemsPerPage https://api-platform.com/docs/core/pagination/#changing-the-number-of-items-per-page
158+
* @param int|null $paginationMaximumItemsPerPage https://api-platform.com/docs/core/pagination/#changing-maximum-items-per-page
159+
* @param bool|null $paginationPartial https://api-platform.com/docs/core/performance/#partial-pagination
160+
* @param string|null $paginationType https://api-platform.com/docs/core/graphql/#using-the-page-based-pagination
161+
* @param string|null $security https://api-platform.com/docs/core/security
162+
* @param string|null $securityMessage https://api-platform.com/docs/core/security/#configuring-the-access-control-error-message
163+
* @param string|null $securityPostDenormalize https://api-platform.com/docs/core/security/#executing-access-control-rules-after-denormalization
164+
* @param string|null $securityPostDenormalizeMessage https://api-platform.com/docs/core/security/#configuring-the-access-control-error-message
165+
* @param string $securityPostValidation https://api-platform.com/docs/core/security/#executing-access-control-rules-after-validtion
166+
* @param string $securityPostValidationMessage https://api-platform.com/docs/core/security/#configuring-the-access-control-error-message
167+
* @param string|callable|null $provider
168+
* @param string|callable|null $processor
166169
*/
167170
public function __construct(
168171
?string $uriTemplate = null,
@@ -233,7 +236,7 @@ public function __construct(
233236
$this->uriTemplate = $uriTemplate;
234237
$this->shortName = $shortName;
235238
$this->description = $description;
236-
$this->types = $types;
239+
$this->types = null === $types ? null : (array) $types;
237240
$this->formats = $formats;
238241
$this->inputFormats = $inputFormats;
239242
$this->outputFormats = $outputFormats;

0 commit comments

Comments
 (0)