27
27
use Symfony \Bundle \MakerBundle \Maker \Common \CanGenerateTestsTrait ;
28
28
use Symfony \Bundle \MakerBundle \Renderer \FormTypeRenderer ;
29
29
use Symfony \Bundle \MakerBundle \Str ;
30
- use Symfony \Bundle \MakerBundle \Util \UseStatementGenerator ;
30
+ use Symfony \Bundle \MakerBundle \Util \ClassSource \ Model \ ClassData ;
31
31
use Symfony \Bundle \MakerBundle \Validator ;
32
32
use Symfony \Bundle \TwigBundle \TwigBundle ;
33
33
use Symfony \Component \Console \Command \Command ;
@@ -147,6 +147,21 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
147
147
++$ iter ;
148
148
} while (class_exists ($ formClassDetails ->getFullName ()));
149
149
150
+ $ controllerClassData = ClassData::create (
151
+ class: \sprintf ('Controller\%s ' , $ this ->controllerClassName ),
152
+ suffix: 'Controller ' ,
153
+ extendsClass: AbstractController::class,
154
+ useStatements: [
155
+ $ entityClassDetails ->getFullName (),
156
+ $ formClassDetails ->getFullName (),
157
+ $ repositoryClassName ,
158
+ AbstractController::class,
159
+ Request::class,
160
+ Response::class,
161
+ Route::class,
162
+ ],
163
+ );
164
+
150
165
$ entityVarPlural = lcfirst ($ this ->inflector ->pluralize ($ entityClassDetails ->getShortName ()));
151
166
$ entityVarSingular = lcfirst ($ this ->inflector ->singularize ($ entityClassDetails ->getShortName ()));
152
167
@@ -156,25 +171,15 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
156
171
$ routeName = Str::asRouteName ($ controllerClassDetails ->getRelativeNameWithoutSuffix ());
157
172
$ templatesPath = Str::asFilePath ($ controllerClassDetails ->getRelativeNameWithoutSuffix ());
158
173
159
- $ useStatements = new UseStatementGenerator ([
160
- $ entityClassDetails ->getFullName (),
161
- $ formClassDetails ->getFullName (),
162
- $ repositoryClassName ,
163
- AbstractController::class,
164
- Request::class,
165
- Response::class,
166
- Route::class,
167
- ]);
168
-
169
174
if (EntityManagerInterface::class !== $ repositoryClassName ) {
170
- $ useStatements ->addUseStatement (EntityManagerInterface::class);
175
+ $ controllerClassData ->addUseStatement (EntityManagerInterface::class);
171
176
}
172
177
173
178
$ generator ->generateController (
174
- $ controllerClassDetails -> getFullName (),
179
+ $ controllerClassData -> getFullClassName (),
175
180
'crud/controller/Controller.tpl.php ' ,
176
181
array_merge ([
177
- 'use_statements ' => $ useStatements ,
182
+ 'class_data ' => $ controllerClassData ,
178
183
'entity_class_name ' => $ entityClassDetails ->getShortName (),
179
184
'form_class_name ' => $ formClassDetails ->getShortName (),
180
185
'route_path ' => Str::asRoutePath ($ controllerClassDetails ->getRelativeNameWithoutSuffix ()),
@@ -242,37 +247,33 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
242
247
}
243
248
244
249
if ($ this ->shouldGenerateTests ()) {
245
- $ testClassDetails = $ generator ->createClassNameDetails (
246
- $ entityClassDetails ->getRelativeNameWithoutSuffix (),
247
- 'Test \\Controller \\' ,
248
- 'ControllerTest '
250
+ $ testClassData = ClassData::create (
251
+ class: \sprintf ('Tests\Controller\%s ' , $ entityClassDetails ->getRelativeNameWithoutSuffix ()),
252
+ suffix: 'ControllerTest ' ,
253
+ extendsClass: WebTestCase::class,
254
+ useStatements: [
255
+ $ entityClassDetails ->getFullName (),
256
+ WebTestCase::class,
257
+ KernelBrowser::class,
258
+ $ repositoryClassName ,
259
+ EntityRepository::class,
260
+ ],
249
261
);
250
262
251
- $ useStatements = new UseStatementGenerator ([
252
- $ entityClassDetails ->getFullName (),
253
- WebTestCase::class,
254
- KernelBrowser::class,
255
- $ repositoryClassName ,
256
- ]);
257
-
258
- $ useStatements ->addUseStatement (EntityRepository::class);
259
-
260
263
if (EntityManagerInterface::class !== $ repositoryClassName ) {
261
- $ useStatements ->addUseStatement (EntityManagerInterface::class);
264
+ $ testClassData ->addUseStatement (EntityManagerInterface::class);
262
265
}
263
266
264
- $ generator ->generateFile (
265
- ' tests/Controller/ ' . $ testClassDetails -> getShortName (). ' .php ' ,
267
+ $ generator ->generateClass (
268
+ $ testClassData -> getFullClassName () ,
266
269
'crud/test/Test.EntityManager.tpl.php ' ,
267
270
[
268
- 'use_statements ' => $ useStatements ,
271
+ 'class_data ' => $ testClassData ,
269
272
'entity_full_class_name ' => $ entityClassDetails ->getFullName (),
270
273
'entity_class_name ' => $ entityClassDetails ->getShortName (),
271
274
'entity_var_singular ' => $ entityVarSingular ,
272
275
'route_path ' => Str::asRoutePath ($ controllerClassDetails ->getRelativeNameWithoutSuffix ()),
273
276
'route_name ' => $ routeName ,
274
- 'class_name ' => Str::getShortClassName ($ testClassDetails ->getFullName ()),
275
- 'namespace ' => Str::getNamespace ($ testClassDetails ->getFullName ()),
276
277
'form_fields ' => $ entityDoctrineDetails ->getFormFields (),
277
278
'repository_class_name ' => EntityManagerInterface::class,
278
279
'form_field_prefix ' => strtolower (Str::asSnakeCase ($ entityTwigVarSingular )),
0 commit comments