Skip to content

Commit

Permalink
RouteCollector: Detect Duplicates Config
Browse files Browse the repository at this point in the history
Renames configuration option for detect duplicates from `[RouteCollector::class]['detect_duplicates']` to `['router']['detect_duplicates']`

Signed-off-by: George Steel <george@net-glue.co.uk>
  • Loading branch information
gsteel committed Jul 18, 2024
1 parent ed003a2 commit 88465d4
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions src/RouteCollectorFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use Psr\Container\ContainerInterface;

use function is_array;
use function is_bool;
use function sprintf;

/**
Expand All @@ -21,6 +22,8 @@
*/
final class RouteCollectorFactory
{
private const DETECT_DUPLICATES_BY_DEFAULT = true;

/**
* @throws Exception\MissingDependencyException If the RouterInterface service is missing.
*/
Expand All @@ -42,24 +45,26 @@ public function __invoke(ContainerInterface $container): RouteCollector
private function getDetectDuplicatesFlag(ContainerInterface $container): bool
{
if (! $container->has('config')) {
return true;
return self::DETECT_DUPLICATES_BY_DEFAULT;
}

$config = $container->get('config');
if (! is_array($config) && ! $config instanceof ArrayAccess) {
throw new LogicException(sprintf('Config must be an array or implement %s.', ArrayAccess::class));
}

if (! isset($config[RouteCollector::class])) {
return true;
}
$options = $config['router'] ?? [];

$collectorOptions = $config[RouteCollector::class] ?? [];
if (! is_array($options)) {
return self::DETECT_DUPLICATES_BY_DEFAULT;
}

if (! is_array($collectorOptions) || ! isset($collectorOptions['detect_duplicates'])) {
return true;
if (! isset($options['detect_duplicates'])) {
return self::DETECT_DUPLICATES_BY_DEFAULT;
}

return (bool) $collectorOptions['detect_duplicates'];
return is_bool($options['detect_duplicates'])
? $options['detect_duplicates']
: self::DETECT_DUPLICATES_BY_DEFAULT;
}
}

0 comments on commit 88465d4

Please sign in to comment.