• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

elephox-dev / framework / 4855566680

pending completion
4855566680

push

github

Ricardo Boss
Moved namespace iteration to its own iterator

1 of 1 new or added line in 1 file covered. (100.0%)

3635 of 5261 relevant lines covered (69.09%)

9.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/modules/Web/src/Routing/NamespaceRouteLoader.php
1
<?php
2
declare(strict_types=1);
3

4
namespace Elephox\Web\Routing;
5

6
use Elephox\Autoloading\Composer\GlobalNamespaceLoader;
7
use Elephox\Collection\Contract\GenericEnumerable;
8
use Elephox\Collection\Enumerable;
9
use Elephox\Web\Routing\Contract\RouteData;
10
use Elephox\Web\Routing\Contract\RouteLoader;
11
use ReflectionException;
12

13
readonly class NamespaceRouteLoader implements RouteLoader
14
{
15
        public function __construct(public string $namespace)
16
        {
17
        }
18

19
        public function getRoutes(): GenericEnumerable
20
        {
21
                /** @var Enumerable<RouteData> */
22
                return new Enumerable(function () {
23
                        foreach ($this->getClassRouteLoaders() as $loader) {
24
                                yield from $loader->getRoutes();
25
                        }
26
                });
27
        }
28

29
        /**
30
         * @return iterable<ClassRouteLoader>
31
         *
32
         * @throws ReflectionException
33
         */
34
        public function getClassRouteLoaders(): iterable
35
        {
36
                foreach (GlobalNamespaceLoader::iterateNamespace($this->namespace) as $loader) {
37
                        yield new ClassRouteLoader($loader);
38
                }
39
        }
40
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc