diff --git a/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverDispatcher.php b/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverDispatcher.php index 1e2f9c02b..1042f3931 100644 --- a/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverDispatcher.php +++ b/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverDispatcher.php @@ -1,27 +1,42 @@ resolvers = $resolvers; } /** - * @param mixed $entity - * @param array|null $options * @return null|Center|Center[] */ public function resolveCenter($entity, ?array $options = []) { - foreach($this->resolvers as $priority => $resolver) { + trigger_deprecation( + 'ChillMainBundle', + 'dev-master', + ' + Use the service CenterResolverManager through the interface CenterResolverManagerInterface. + The new method "CenterResolverManagerInterface::resolveCenters(): array" is available and the typing + has been improved in order to avoid mixing types. + ' + ); + + foreach($this->resolvers as $resolver) { if ($resolver->supports($entity, $options)) { return $resolver->resolveCenter($entity, $options); } diff --git a/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManager.php b/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManager.php new file mode 100644 index 000000000..9f09398a5 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManager.php @@ -0,0 +1,31 @@ +resolvers = $resolvers; + } + + public function resolveCenters($entity, ?array $options = []): array + { + foreach($this->resolvers as $resolver) { + if ($resolver->supports($entity, $options)) { + return (array) $resolver->resolveCenter($entity, $options); + } + } + + return []; + } +} diff --git a/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManagerInterface.php b/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManagerInterface.php new file mode 100644 index 000000000..deaaff182 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Security/Resolver/CenterResolverManagerInterface.php @@ -0,0 +1,15 @@ +