Skip to content

Commit 7c7fa32

Browse files
committed
Create ClassCreator.php
1 parent 321d32f commit 7c7fa32

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
3+
4+
namespace Ubiquity\scaffolding\creators;
5+
6+
7+
use Ubiquity\utils\base\UFileSystem;
8+
use Ubiquity\utils\base\UString;
9+
10+
class ClassCreator {
11+
private string $template;
12+
private string $classname;
13+
private string $namespace;
14+
private string $uses;
15+
private string $extendsOrImplements;
16+
private string $classContent;
17+
18+
private function getTemplateDir() {
19+
return \dirname(__DIR__) . "/scaffolding/templates/";
20+
}
21+
22+
public function __construct($classname,$uses,$namespace,$extendsOrImplements='',$classContent=''){
23+
$this->classname=$classname;
24+
$this->uses=$uses;
25+
$this->namespace=$namespace;
26+
$this->extendsOrImplements=$extendsOrImplements;
27+
$this->classContent=$classContent;
28+
$this->template='class.tpl';
29+
}
30+
31+
public function generate():bool{
32+
$namespaceVar = '';
33+
if (UString::isNotNull($this->namespace)) {
34+
$namespaceVar = "namespace {$this->namespace};";
35+
}
36+
$variables = [
37+
'%classname%' => $this->classname,
38+
'%namespace%' => $namespaceVar,
39+
'%uses%' => $this->uses,
40+
'%extendsOrImplements%' => $this->extendsOrImplements,
41+
'%classContent%' => $this->classContent
42+
];
43+
$templateDir = $this->getTemplateDir();
44+
$directory = UFileSystem::getDirFromNamespace($this->namespace);
45+
UFileSystem::safeMkdir($directory);
46+
$filename = UFileSystem::cleanFilePathname($directory . \DS . $this->classname . '.php');
47+
if (! file_exists($filename)) {
48+
UFileSystem::openReplaceWriteFromTemplateFile($templateDir . $this->template, $filename, $variables);
49+
return true;
50+
}
51+
return false;
52+
}
53+
54+
/**
55+
* @return string
56+
*/
57+
public function getTemplate(): string {
58+
return $this->template;
59+
}
60+
61+
/**
62+
* @param string $template
63+
*/
64+
public function setTemplate(string $template): void {
65+
$this->template = $template;
66+
}
67+
}

0 commit comments

Comments
 (0)