| Total Complexity | 2 |
| Total Lines | 36 |
| Duplicated Lines | 0 % |
| Coverage | 100% |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
| 1 | <?php |
||
| 12 | #[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_CLASS | Attribute::IS_REPEATABLE)] |
||
| 13 | final class Options implements RouteAttributeInterface |
||
| 14 | { |
||
| 15 | private Route $route; |
||
| 16 | |||
| 17 | /** |
||
| 18 | * @param array<string,scalar|Stringable|null> $defaults Parameter default values indexed by parameter names. |
||
| 19 | * @param bool $override Marks route as override. When added it will replace existing route with the same name. |
||
| 20 | * @param array $disabledMiddlewares Excludes middleware from being invoked when action is handled. |
||
| 21 | * It is useful to avoid invoking one of the parent group middleware for |
||
| 22 | * a certain route. |
||
| 23 | */ |
||
| 24 | 2 | public function __construct( |
|
| 25 | string $pattern, |
||
| 26 | ?string $name = null, |
||
| 27 | array $middlewares = [], |
||
| 28 | array $defaults = [], |
||
| 29 | array $hosts = [], |
||
| 30 | bool $override = false, |
||
| 31 | array $disabledMiddlewares = [] |
||
| 32 | ) { |
||
| 33 | 2 | $this->route = new Route( |
|
| 34 | 2 | methods: [Method::OPTIONS], |
|
| 35 | 2 | pattern: $pattern, |
|
| 36 | 2 | name: $name, |
|
| 37 | 2 | middlewareDefinitions: $middlewares, |
|
| 38 | 2 | defaults: $defaults, |
|
| 39 | 2 | hosts: $hosts, |
|
| 40 | 2 | override: $override, |
|
| 41 | 2 | disabledMiddlewareDefinitions: $disabledMiddlewares |
|
| 42 | 2 | ); |
|
| 43 | } |
||
| 44 | |||
| 45 | 2 | public function getRoute(): Route |
|
| 48 | } |
||
| 49 | } |
||
| 50 |
Let?s assume that you have a directory layout like this:
. |-- OtherDir | |-- Bar.php | `-- Foo.php `-- SomeDir `-- Foo.phpand let?s assume the following content of
Bar.php:If both files
OtherDir/Foo.phpandSomeDir/Foo.phpare 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.phpHowever, as
OtherDir/Foo.phpdoes 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: