1 | <?php |
||
20 | class ControllerFinder |
||
21 | { |
||
22 | /** @var null|string */ |
||
23 | private $controllerDir; |
||
24 | |||
25 | /** @var string[] */ |
||
26 | private $controllers; |
||
27 | |||
28 | /** |
||
29 | * ControllerFinder constructor. |
||
30 | * |
||
31 | * @param string|null $controllerDir |
||
32 | * @param string[] $controllers |
||
33 | */ |
||
34 | public function __construct(string $controllerDir = null, array $controllers = []) |
||
39 | |||
40 | /** |
||
41 | * @return string[] |
||
42 | */ |
||
43 | public function getControllerClasses(): array |
||
48 | |||
49 | /** |
||
50 | * Recursively walk the file tree starting from $dir to find potential controller class files. |
||
51 | * Returns array of fully qualified class names. |
||
52 | * Namespace detection works with PSR-0 or PSR-4 autoloading. |
||
53 | * |
||
54 | * @param string $dir |
||
55 | * @param string $namespace |
||
56 | * @param string[] $files |
||
57 | * @return string[] |
||
58 | */ |
||
59 | private function getClassesInDirectory(string $dir, string $namespace = '', $files = []): array |
||
88 | |||
89 | /** |
||
90 | * Parse the given file to find the namespace. |
||
91 | * |
||
92 | * @param $filePath |
||
93 | * @return string |
||
94 | */ |
||
95 | private function parseNamespace($filePath): string |
||
100 | } |