25
25
*/
26
26
class Controller extends Make
27
27
{
28
+ /**
29
+ * Controller::$reconstruct
30
+ *
31
+ * @var bool
32
+ */
33
+ protected $ http = false ;
34
+
28
35
/**
29
36
* Controller::$commandDescription
30
37
*
@@ -36,6 +43,20 @@ class Controller extends Make
36
43
37
44
// ------------------------------------------------------------------------
38
45
46
+ /**
47
+ * Controller::addReconstruct
48
+ *
49
+ * @return static
50
+ */
51
+ public function isHttp ()
52
+ {
53
+ $ this ->http = true ;
54
+
55
+ return $ this ;
56
+ }
57
+
58
+ // ------------------------------------------------------------------------
59
+
39
60
/**
40
61
* Controller::execute
41
62
*
@@ -56,8 +77,21 @@ public function execute()
56
77
exit (EXIT_ERROR );
57
78
}
58
79
59
- if (strpos ($ this ->optionPath , 'Controllers ' ) === false ) {
60
- $ filePath = $ this ->optionPath . 'Controllers ' . DIRECTORY_SEPARATOR . $ this ->optionFilename ;
80
+ $ controllerDir = 'Controllers ' ;
81
+ $ controllerTemplateFile = 'Controller.tpl ' ;
82
+ $ messageSuccess = 'CLI_MAKE_CONTROLLER_S_MAKE ' ;
83
+ $ messageError = 'CLI_MAKE_CONTROLLER_E_MAKE ' ;
84
+
85
+ if ($ this ->http ) {
86
+ $ controllerDir = 'Http ' ;
87
+ $ controllerTemplateFile = 'HttpController.tpl ' ;
88
+ $ messageSuccess = 'CLI_MAKE_HTTP_CONTROLLER_S_MAKE ' ;
89
+ $ messageError = 'CLI_MAKE_HTTP_CONTROLLER_S_MAKE ' ;
90
+ $ this ->optionFilename = 'Controller.php ' ;
91
+ }
92
+
93
+ if (strpos ($ this ->optionPath , $ controllerDir ) === false ) {
94
+ $ filePath = $ this ->optionPath . $ controllerDir . DIRECTORY_SEPARATOR . $ this ->optionFilename ;
61
95
} else {
62
96
$ filePath = $ this ->optionPath . $ this ->optionFilename ;
63
97
}
@@ -72,63 +106,38 @@ public function execute()
72
106
output ()->write (
73
107
(new Format ())
74
108
->setContextualClass (Format::DANGER )
75
- ->setString (language ()->getLine (' CLI_MAKE_CONTROLLER_E_EXISTS ' , [$ filePath ]))
109
+ ->setString (language ()->getLine ($ messageError , [$ filePath ]))
76
110
->setNewLinesAfter (1 )
77
111
);
78
112
79
113
exit (EXIT_ERROR );
80
114
}
81
115
82
116
$ className = prepare_class_name (pathinfo ($ filePath , PATHINFO_FILENAME ));
83
- @list ($ namespaceDirectory , $ subNamespace ) = explode ('Controllers ' , dirname ($ filePath ));
117
+ @list ($ namespaceDirectory , $ subNamespace ) = explode ($ controllerDir , str_replace (['\\' ,'/ ' ], '\\' , dirname ($ filePath )));
118
+ $ subNamespace = rtrim ($ subNamespace , '\\' );
84
119
85
120
$ classNamespace = loader ()->getDirNamespace (
86
121
$ namespaceDirectory
87
- ) . ' Controllers ' . (empty ($ subNamespace )
122
+ ) . $ controllerDir . (empty ($ subNamespace )
88
123
? null
89
- : str_replace (
90
- '/ ' ,
91
- '\\' ,
92
- $ subNamespace
93
- )) . '\\' ;
124
+ : $ subNamespace ) . '\\' ;
94
125
95
126
$ vars [ 'CREATE_DATETIME ' ] = date ('d/m/Y H:m ' );
96
127
$ vars [ 'NAMESPACE ' ] = trim ($ classNamespace , '\\' );
97
128
$ vars [ 'PACKAGE ' ] = '\\' . trim ($ classNamespace , '\\' );
98
129
$ vars [ 'CLASS ' ] = $ className ;
99
130
$ vars [ 'FILEPATH ' ] = $ filePath ;
100
131
101
- $ phpTemplate = <<<PHPTEMPLATE
102
- <?php
103
- /**
104
- * Created by O2System Framework File Generator.
105
- * DateTime: CREATE_DATETIME
106
- */
107
-
108
- // ------------------------------------------------------------------------
109
-
110
- namespace NAMESPACE;
132
+ $ phpTemplateFilePaths = $ this ->getFilePaths (true );
111
133
112
- // ------------------------------------------------------------------------
113
-
114
- use O2System\Framework\Http\Controller;
115
-
116
- /**
117
- * Class CLASS
118
- *
119
- * @package PACKAGE
120
- */
121
- class CLASS extends Controller
122
- {
123
- /**
124
- * CLASS::index
125
- */
126
- public function index()
127
- {
128
- // TODO: Change the autogenerated stub
129
- }
130
- }
131
- PHPTEMPLATE ;
134
+ foreach ($ phpTemplateFilePaths as $ phpTemplateFilePath )
135
+ {
136
+ if (is_file ($ phpTemplateFilePath .$ controllerTemplateFile )) {
137
+ $ phpTemplate = file_get_contents ($ phpTemplateFilePath . $ controllerTemplateFile );
138
+ break ;
139
+ }
140
+ }
132
141
133
142
$ fileContent = str_replace (array_keys ($ vars ), array_values ($ vars ), $ phpTemplate );
134
143
file_put_contents ($ filePath , $ fileContent );
@@ -137,7 +146,7 @@ public function index()
137
146
output ()->write (
138
147
(new Format ())
139
148
->setContextualClass (Format::SUCCESS )
140
- ->setString (language ()->getLine (' CLI_MAKE_CONTROLLER_S_MAKE ' , [$ filePath ]))
149
+ ->setString (language ()->getLine ($ messageSuccess , [$ filePath ]))
141
150
->setNewLinesAfter (1 )
142
151
);
143
152
0 commit comments