Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
RouteAttributeHandler
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
4 / 4
4
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 attributeClass
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 targets
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 handle
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Dynart\Micro\AttributeHandler;
4
5use Dynart\Micro\AttributeHandler;
6use Dynart\Micro\Attribute\Route;
7use Dynart\Micro\Router;
8
9/**
10 * Handles #[Route] attributes
11 *
12 * @see AttributeHandler
13 * @package Dynart\Micro
14 */
15class RouteAttributeHandler implements AttributeHandler {
16
17    /** @var Router */
18    private $router;
19
20    public function __construct(Router $router) {
21        $this->router = $router;
22    }
23
24    public function attributeClass(): string {
25        return Route::class;
26    }
27
28    public function targets(): array {
29        return [AttributeHandler::TARGET_METHOD];
30    }
31
32    public function handle(string $className, mixed $subject, object $attribute): void {
33        $this->router->add($attribute->path, [$className, $subject->getName()], $attribute->method);
34    }
35}