Skip to content

Commit 63bcdf3

Browse files
committed
feat: use AutoRouteCollectorImproved()
1 parent b21a18d commit 63bcdf3

1 file changed

Lines changed: 29 additions & 13 deletions

File tree

system/Commands/Utilities/Routes.php

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use CodeIgniter\CLI\BaseCommand;
1616
use CodeIgniter\CLI\CLI;
1717
use CodeIgniter\Commands\Utilities\Routes\AutoRouteCollector;
18+
use CodeIgniter\Commands\Utilities\Routes\AutoRouterImproved\AutoRouteCollector as AutoRouteCollectorImproved;
1819
use CodeIgniter\Commands\Utilities\Routes\FilterCollector;
1920
use CodeIgniter\Commands\Utilities\Routes\SampleURIGenerator;
2021
use Config\Services;
@@ -112,19 +113,34 @@ public function run(array $params)
112113
}
113114

114115
if ($collection->shouldAutoRoute()) {
115-
$autoRouteCollector = new AutoRouteCollector(
116-
$collection->getDefaultNamespace(),
117-
$collection->getDefaultController(),
118-
$collection->getDefaultMethod()
119-
);
120-
$autoRoutes = $autoRouteCollector->get();
121-
122-
foreach ($autoRoutes as &$routes) {
123-
// There is no `auto` method, but it is intentional not to get route filters.
124-
$filters = $filterCollector->get('auto', $uriGenerator->get($routes[1]));
125-
126-
$routes[] = implode(' ', array_map('class_basename', $filters['before']));
127-
$routes[] = implode(' ', array_map('class_basename', $filters['after']));
116+
$autoRoutesImproved = config('Feature')->autoRoutesImproved ?? false;
117+
118+
if ($autoRoutesImproved) {
119+
$autoRouteCollector = new AutoRouteCollectorImproved(
120+
$collection->getDefaultNamespace(),
121+
$collection->getDefaultController(),
122+
$collection->getDefaultMethod(),
123+
$methods,
124+
$collection->getRegisteredControllers('*')
125+
);
126+
127+
$autoRoutes = $autoRouteCollector->get();
128+
} else {
129+
$autoRouteCollector = new AutoRouteCollector(
130+
$collection->getDefaultNamespace(),
131+
$collection->getDefaultController(),
132+
$collection->getDefaultMethod()
133+
);
134+
135+
$autoRoutes = $autoRouteCollector->get();
136+
137+
foreach ($autoRoutes as &$routes) {
138+
// There is no `auto` method, but it is intentional not to get route filters.
139+
$filters = $filterCollector->get('auto', $uriGenerator->get($routes[1]));
140+
141+
$routes[] = implode(' ', array_map('class_basename', $filters['before']));
142+
$routes[] = implode(' ', array_map('class_basename', $filters['after']));
143+
}
128144
}
129145

130146
$tbody = [...$tbody, ...$autoRoutes];

0 commit comments

Comments
 (0)