Skip to content

Commit bc90bf9

Browse files
authored
Merge pull request #4811 from soyuka/chore/deprecation
chore(deprecations): configuration and identifiers extractor
2 parents 5752f91 + 5cadcb3 commit bc90bf9

File tree

9 files changed

+35
-175
lines changed

9 files changed

+35
-175
lines changed

src/Api/IdentifiersExtractor.php

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -141,38 +141,10 @@ private function resolveIdentifierValue($identifierValue, string $parameterName)
141141
return $identifierValue;
142142
}
143143

144-
// TODO: php 8 remove method_exists
145-
if (method_exists($identifierValue, '__toString') || $identifierValue instanceof \Stringable) {
144+
if ($identifierValue instanceof \Stringable) {
146145
return (string) $identifierValue;
147146
}
148147

149-
// TODO: remove this in 3.0
150-
// we could recurse to find correct identifiers until there it is a scalar but this is not really supported and adds a lot of complexity
151-
// instead we're deprecating this behavior in favor of something that can be transformed to a string
152-
if ($this->isResourceClass($relatedResourceClass = $this->getObjectClass($identifierValue))) {
153-
trigger_deprecation('api-platform/core', '2.7', 'Using a resource class as identifier is deprecated, please make this identifier Stringable');
154-
$relatedOperation = $this->resourceMetadataFactory->create($relatedResourceClass)->getOperation();
155-
156-
$relatedLinks = [];
157-
if ($relatedOperation instanceof GraphQlOperation) {
158-
$relatedLinks = $relatedOperation->getLinks();
159-
} elseif ($relatedOperation instanceof HttpOperation) {
160-
$relatedLinks = $relatedOperation->getUriVariables();
161-
}
162-
163-
if (1 === \count($relatedLinks)) {
164-
$identifierValue = $this->getIdentifierValue($identifierValue, $relatedResourceClass, current($relatedLinks)->getIdentifiers()[0], $parameterName);
165-
166-
if (\is_scalar($identifierValue)) {
167-
return $identifierValue;
168-
}
169-
170-
if ($identifierValue instanceof \Stringable || method_exists($identifierValue, '__toString')) {
171-
return (string) $identifierValue;
172-
}
173-
}
174-
}
175-
176148
throw new RuntimeException(sprintf('We were not able to resolve the identifier matching parameter "%s".', $parameterName));
177149
}
178150
}

src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,6 @@ private function registerCommonConfiguration(ContainerBuilder $container, array
157157
$container->setParameter('api_platform.formats', $formats);
158158
$container->setParameter('api_platform.patch_formats', $patchFormats);
159159
$container->setParameter('api_platform.error_formats', $errorFormats);
160-
// TODO: to remove in 3.0
161-
$container->setParameter('api_platform.allow_plain_identifiers', $config['allow_plain_identifiers']);
162160
$container->setParameter('api_platform.eager_loading.enabled', $this->isConfigEnabled($container, $config['eager_loading']));
163161
$container->setParameter('api_platform.eager_loading.max_joins', $config['eager_loading']['max_joins']);
164162
$container->setParameter('api_platform.eager_loading.fetch_partial', $config['eager_loading']['fetch_partial']);
@@ -167,27 +165,26 @@ private function registerCommonConfiguration(ContainerBuilder $container, array
167165
$container->setParameter('api_platform.collection.order', $config['collection']['order']);
168166
$container->setParameter('api_platform.collection.order_parameter_name', $config['collection']['order_parameter_name']);
169167
$container->setParameter('api_platform.collection.order_nulls_comparison', $config['collection']['order_nulls_comparison']);
170-
$container->setParameter('api_platform.collection.pagination.enabled', $config['defaults']['pagination_enabled'] ?? $this->isConfigEnabled($container, $config['collection']['pagination']));
171-
$container->setParameter('api_platform.collection.pagination.partial', $config['defaults']['pagination_partial'] ?? $config['collection']['pagination']['partial']);
172-
$container->setParameter('api_platform.collection.pagination.client_enabled', $config['defaults']['pagination_client_enabled'] ?? $config['collection']['pagination']['client_enabled']);
173-
$container->setParameter('api_platform.collection.pagination.client_items_per_page', $config['defaults']['pagination_client_items_per_page'] ?? $config['collection']['pagination']['client_items_per_page']);
174-
$container->setParameter('api_platform.collection.pagination.client_partial', $config['defaults']['pagination_client_partial'] ?? $config['collection']['pagination']['client_partial']);
175-
$container->setParameter('api_platform.collection.pagination.items_per_page', $config['defaults']['pagination_items_per_page'] ?? $config['collection']['pagination']['items_per_page']);
176-
$container->setParameter('api_platform.collection.pagination.maximum_items_per_page', $config['defaults']['pagination_maximum_items_per_page'] ?? $config['collection']['pagination']['maximum_items_per_page']);
168+
$container->setParameter('api_platform.collection.pagination.enabled', $config['defaults']['pagination_enabled'] ?? true);
169+
$container->setParameter('api_platform.collection.pagination.partial', $config['defaults']['pagination_partial'] ?? false);
170+
$container->setParameter('api_platform.collection.pagination.client_enabled', $config['defaults']['pagination_client_enabled'] ?? false);
171+
$container->setParameter('api_platform.collection.pagination.client_items_per_page', $config['defaults']['pagination_client_items_per_page'] ?? false);
172+
$container->setParameter('api_platform.collection.pagination.client_partial', $config['defaults']['pagination_client_partial'] ?? false);
173+
$container->setParameter('api_platform.collection.pagination.items_per_page', $config['defaults']['pagination_items_per_page'] ?? 30);
174+
$container->setParameter('api_platform.collection.pagination.maximum_items_per_page', $config['defaults']['pagination_maximum_items_per_page'] ?? null);
177175
$container->setParameter('api_platform.collection.pagination.page_parameter_name', $config['defaults']['pagination_page_parameter_name'] ?? $config['collection']['pagination']['page_parameter_name']);
178176
$container->setParameter('api_platform.collection.pagination.enabled_parameter_name', $config['defaults']['pagination_enabled_parameter_name'] ?? $config['collection']['pagination']['enabled_parameter_name']);
179177
$container->setParameter('api_platform.collection.pagination.items_per_page_parameter_name', $config['defaults']['pagination_items_per_page_parameter_name'] ?? $config['collection']['pagination']['items_per_page_parameter_name']);
180178
$container->setParameter('api_platform.collection.pagination.partial_parameter_name', $config['defaults']['pagination_partial_parameter_name'] ?? $config['collection']['pagination']['partial_parameter_name']);
181179
$container->setParameter('api_platform.collection.pagination', $this->getPaginationDefaults($config['defaults'] ?? [], $config['collection']['pagination']));
182-
$container->setParameter('api_platform.http_cache.etag', $config['defaults']['cache_headers']['etag'] ?? $config['http_cache']['etag']);
183-
$container->setParameter('api_platform.http_cache.max_age', $config['defaults']['cache_headers']['max_age'] ?? $config['http_cache']['max_age']);
184-
$container->setParameter('api_platform.http_cache.shared_max_age', $config['defaults']['cache_headers']['shared_max_age'] ?? $config['http_cache']['shared_max_age']);
185-
$container->setParameter('api_platform.http_cache.vary', $config['defaults']['cache_headers']['vary'] ?? $config['http_cache']['vary']);
180+
$container->setParameter('api_platform.http_cache.etag', $config['defaults']['cache_headers']['etag'] ?? true);
181+
$container->setParameter('api_platform.http_cache.max_age', $config['defaults']['cache_headers']['max_age'] ?? null);
182+
$container->setParameter('api_platform.http_cache.shared_max_age', $config['defaults']['cache_headers']['shared_max_age'] ?? null);
183+
$container->setParameter('api_platform.http_cache.vary', $config['defaults']['cache_headers']['vary'] ?? ['Accept']);
186184
$container->setParameter('api_platform.http_cache.public', $config['defaults']['cache_headers']['public'] ?? $config['http_cache']['public']);
187185
$container->setParameter('api_platform.http_cache.invalidation.max_header_length', $config['defaults']['cache_headers']['invalidation']['max_header_length'] ?? $config['http_cache']['invalidation']['max_header_length']);
188186
$container->setParameter('api_platform.http_cache.invalidation.xkey.glue', $config['defaults']['cache_headers']['invalidation']['xkey']['glue'] ?? $config['http_cache']['invalidation']['xkey']['glue']);
189187

190-
$container->setAlias('api_platform.operation_path_resolver.default', $config['default_operation_path_resolver']);
191188
$container->setAlias('api_platform.path_segment_name_generator', $config['path_segment_name_generator']);
192189

193190
if ($config['name_converter']) {

0 commit comments

Comments
 (0)