44namespace Ubiquity \scaffolding \creators ;
55
66
7+ use Ubiquity \creator \HasUsesTrait ;
78use Ubiquity \utils \base \UFileSystem ;
89use Ubiquity \utils \base \UString ;
910
1011class ClassCreator {
12+ use HasUsesTrait;
13+
1114 private string $ template ;
1215 private string $ classname ;
1316 private string $ namespace ;
14- private string $ uses ;
1517 private string $ extendsOrImplements ;
1618 private string $ classContent ;
19+ private array $ classAttributes ;
1720
1821 private function getTemplateDir () {
1922 return \dirname (__DIR__ ) . "/templates/ " ;
2023 }
2124
22- public function __construct ($ classname ,$ uses , $ namespace ,$ extendsOrImplements ='' ,$ classContent ='' ){
25+ public function __construct ($ classname , $ namespace , $ extendsOrImplements ='' , $ classContent ='' ) {
2326 $ this ->classname =$ classname ;
24- $ this ->uses =$ uses ;
2527 $ this ->namespace =$ namespace ;
2628 $ this ->extendsOrImplements =$ extendsOrImplements ;
2729 $ this ->classContent =$ classContent ;
2830 $ this ->template ='class.tpl ' ;
31+ $ this ->classAttributes =[];
32+ $ this ->uses =[];
2933 }
3034
31- public function generate ():bool {
35+ public function generate (): bool {
3236 $ namespaceVar = '' ;
3337 if (UString::isNotNull ($ this ->namespace )) {
3438 $ namespaceVar = "namespace {$ this ->namespace }; " ;
3539 }
3640 $ variables = [
3741 '%classname% ' => $ this ->classname ,
3842 '%namespace% ' => $ namespaceVar ,
39- '%uses% ' => $ this ->uses ,
43+ '%uses% ' => $ this ->getUsesStr () ,
4044 '%extendsOrImplements% ' => $ this ->extendsOrImplements ,
41- '%classContent% ' => $ this ->classContent
45+ '%classContent% ' => $ this ->classContent ,
46+ '%classAttributes% ' =>\implode ("\n" , $ this ->classAttributes )
4247 ];
4348 $ templateDir = $ this ->getTemplateDir ();
4449 $ directory = UFileSystem::getDirFromNamespace ($ this ->namespace );
@@ -64,4 +69,8 @@ public function getTemplate(): string {
6469 public function setTemplate (string $ template ): void {
6570 $ this ->template = $ template ;
6671 }
72+
73+ public function addClassAttribute ($ attribute ) {
74+ $ this ->classAttributes []=$ attribute ;
75+ }
6776}
0 commit comments