Total Complexity | 7 |
Total Lines | 40 |
Duplicated Lines | 0 % |
Coverage | 87.5% |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
1 | <?php |
||
15 | final class Introspector |
||
16 | { |
||
17 | 1 | public static function scopeName(?ContainerInterface $container = null): ?string |
|
20 | } |
||
21 | |||
22 | /** |
||
23 | * Returns list of scope names starting from the current scope to the root scope. |
||
24 | * |
||
25 | * @return list<string|null> |
||
26 | */ |
||
27 | 1 | public static function scopeNames(?ContainerInterface $container = null): array |
|
28 | { |
||
29 | 1 | $scope = self::getAccessor($container)->scope; |
|
30 | 1 | $result = []; |
|
31 | do { |
||
32 | 1 | $result[] = $scope->getScopeName(); |
|
33 | 1 | $scope = $scope->getParentScope(); |
|
34 | 1 | } while ($scope !== null); |
|
35 | |||
36 | 1 | return $result; |
|
37 | } |
||
38 | |||
39 | /** |
||
40 | * @psalm-assert Container|null $container |
||
41 | */ |
||
42 | 2 | public static function getAccessor(?ContainerInterface $container = null): Accessor |
|
55 | } |
||
56 | } |
||
57 |
Let?s assume that you have a directory layout like this:
and let?s assume the following content of
Bar.php
:If both files
OtherDir/Foo.php
andSomeDir/Foo.php
are loaded in the same runtime, you will see a PHP error such as the following:PHP Fatal error: Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php
However, as
OtherDir/Foo.php
does not necessarily have to be loaded and the error is only triggered if it is loaded beforeOtherDir/Bar.php
, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias: