17 private string $defaultRootFolder;
23 $this->defaultRootFolder = (string)
$_SERVER[
'DOCUMENT_ROOT'];
28 return $this->getTemplate($dto)->getContent();
33 $fileTemplate = $this->getTemplate($dto);
37 $dto->rootFolder ?: $this->defaultRootFolder,
40 $namespace = $this->generateNamespace($dto);
41 $className = $this->normalizeControllerName($dto->name);
43 $filePath = $pathGenerator->generatePathToClass($namespace, $className);
45 $this->renderer->renderToFile($filePath, $fileTemplate);
50 private function generateNamespace(
GenerateDto $dto): string
52 $namespace = $dto->namespace;
53 if (empty($namespace))
58 throw new InvalidArgumentException(
'If namespace option is not set, module argument MUST BE set!');
61 $namespace = $this->namespaceGenerator->generateNamespaceForModule(
$moduleId,
'Controller');
67 private function normalizeControllerName(
string $name): string
69 $name = preg_replace(
'/Controller$/i',
'',
$name);
72 throw new InvalidArgumentException(
'Invalid controller name');
75 return ucfirst(
$name);
78 private function getTemplate(GenerateDto $dto): Template
80 $namespace = $this->generateNamespace($dto);
81 $className = $this->normalizeControllerName($dto->name);
83 return new ControllerTemplate($className, $namespace, $dto->moduleId, $dto->alias, $dto->actions);
generateContent(GenerateDto $dto)
generateFile(GenerateDto $dto)