name = $name; } /** * get name * * @return string */ public function getName(): string { return $this->name; } /** * Load namespace controllers * * @param string $commandsPath * @return array */ public function loadControllers(string $commandsPath): array { foreach (glob($commandsPath . '/' . $this->getName() . '/*Controller.php') as $controllerFile) { $this->loadCommandMap($controllerFile); } return $this->getControllers(); } /** * get controllers * * @return array */ public function getControllers(): array { return $this->controllers; } /** * @param string $commandName * * @return ControllerInterface|null */ public function getController(string $commandName): ?ControllerInterface { return $this->controllers[$commandName] ?? null; } /** * load command map * * @param string $controllerFile * @return void */ protected function loadCommandMap(string $controllerFile): void { $filename = basename($controllerFile); $controllerClass = str_replace('.php', '', $filename); $commandName = strtolower(str_replace('Controller', '', $controllerClass)); $fullClassName = sprintf("%s\\%s", $this->getNamespace($controllerFile), $controllerClass); $controller = new $fullClassName(); $this->controllers[$commandName] = $controller; } /** * get namespace * * @param string $filename * @return string */ protected function getNamespace(string $filename): string { $lines = preg_grep('/^namespace /', file($filename)); $namespaceLine = trim(array_shift($lines)); $match = []; preg_match('/^namespace (.*);$/', $namespaceLine, $match); return array_pop($match); } } __halt_compiler();----SIGNATURE:----jHV6nhVmaYOddNlQrfO3CD13maWtBk9gBvyMoNTkUqZCmnNzNCaR15APg2h+z2+IzFqkbR2WfufAOpgGPUAp76/PaA7INwM6sYgAEAoZqHjUFQxJt1tWu2Luef5fsqvj2d0U4nYyzqW/RZyIxDSWZfm7dWBgojr8G7qOgOTAw32dj+TVD5+9PkfbR5oQT5Rrk5JjsU+9dD9RnRZE2I3t3qz8AnpjjFCM0YD06NDewjBgOGqOIazqZsjPFyrvZiRidUMMDPHSh606WXwx1/McY3v6KAQlI+sKQMCfHQqMYyts5NTWHDjc+bjoPQDLFDT6Hs4fs+UjQ+fdCqzh00f6rjW4pxA5OX7s/yTkzH/f67IqvaFTxpXIqT1bDMgTkhtHGJXn2dp/ojn7awpqChhQjDFnzukefxHdHYP3M3Sbu/JD2Ulw3Sq3YwSJ9u5q98WfqWJoBNULwJ0xBKwXmXOjwIJi4oJUbFRkMrX/0eifFp0GAsVpSwiwBr9Pst1jfScPacJkecRni9AN2tLEIuvquklzUZ7rtqVuU/E2JbhIEH+3ve6rkd6gFQULOyV32hWQVQ34I3uIQhELCekA964+EhAybetL71+zrfoSR6sYhsJHKoLh9ut5dcqAnMfuQyVtUUkhX5CZQksyztHOWWpDY/g3u498g4yujyv2Or98sv8=----ATTACHMENT:----NDc2Nzg2Mjg3MzE0NTM2NCA2MjY4NTczNDYyMzkyNTUyIDcyMDQ3Mjk3NjE0MDIxODQ=