33namespace console \commands ;
44
55use Yii ;
6+ use yii \base \ExitException ;
67use yii \base \Model ;
78use yii \console \Controller ;
89use yii \console \ExitCode ;
1516 */
1617class FakerController extends Controller
1718{
19+ /**
20+ * @throws ExitException when not in debug mode.
21+ */
22+ public function beforeAction ($ action )
23+ {
24+ if (!YII_DEBUG ) {
25+ $ this ->stdout ('Faker command can only be used in development environment! ' . PHP_EOL , Console::BOLD , Console::FG_RED );
26+ throw new ExitException (ExitCode::UNSPECIFIED_ERROR );
27+ }
28+ return parent ::beforeAction ($ action );
29+ }
30+
1831 /**
1932 * Fill tables with fake data
2033 */
2134 public function actionIndex ()
2235 {
23- $ fakers = FileHelper::findFiles (\Yii::getAlias ('@common/models ' ), [
24- 'only ' => ['*Faker.php ' ],
25- 'except ' => ['BaseModelFaker.php ' ],
26- ]);
27-
28- $ sortedFakersModels = static ::sortModels ($ fakers , '\\common \\models \\faker \\' );
29-
30- foreach ($ sortedFakersModels as $ justModelClassName ) {
31- $ className = 'common \\models \\faker \\' . StringHelper::basename ($ justModelClassName , '.php ' ).'Faker ' ;
32- $ this ->stdout ('Generating fake data for ' . StringHelper::basename ($ justModelClassName , 'Faker.php ' ) . '... ' );
36+ $ fakerModels = $ this ->getFakersModels ();
37+ foreach ($ fakerModels as $ modelClassName ) {
38+ $ className = 'common \\models \\faker \\' . StringHelper::basename ($ modelClassName , '.php ' ).'Faker ' ;
39+ $ this ->stdout ('Generating fake data for ' . StringHelper::basename ($ modelClassName , 'Faker.php ' ) . '... ' );
3340 $ faker = new $ className ;
3441 for ($ i = 0 ; $ i < 10 ; $ i ++) {
3542 $ model = $ faker ->generateModel ();
@@ -51,18 +58,13 @@ public function actionClear($requireConfirm = true): int
5158 return ExitCode::OK ;
5259 }
5360
54- $ fakers = FileHelper::findFiles (\Yii::getAlias ('@common/models ' ), [
55- 'only ' => ['*Faker.php ' ],
56- 'except ' => ['BaseModelFaker.php ' ],
57- ]);
58-
59- $ sortedFakersModels = static ::sortModels ($ fakers , '\\common \\models \\faker \\' );
61+ $ sortedFakersModels = $ this ->getFakersModels ();
6062 $ sortedFakersModels_DESC = array_reverse ($ sortedFakersModels );
61- foreach ($ sortedFakersModels_DESC as $ modelName ) {
63+ foreach ($ sortedFakersModels_DESC as $ modelClassName ) {
6264 /** @var Model $modelClass */
63- $ modelClass = 'common \\models \\base \\' .$ modelName ;
65+ $ modelClass = 'common \\models \\base \\' .$ modelClassName ;
6466 Yii::$ app ->db ->createCommand ()->delete ($ modelClass ::tableName ())->execute ();
65- $ this ->stdout ("Data from $ modelName was deleted \n" );
67+ $ this ->stdout ("Data from $ modelClassName was deleted \n" );
6668 }
6769 return ExitCode::OK ;
6870 }
@@ -146,4 +148,18 @@ public static function moveModel(&$sortedDependentModels, $dependentOn, $model)
146148
147149 $ sortedDependentModels = array_merge ($ restLeft , [$ dependentOn ], $ restRight );
148150 }
151+
152+ /**
153+ * @return int[]|string[]
154+ */
155+ private function getFakersModels (): array
156+ {
157+ $ fakers = FileHelper::findFiles (\Yii::getAlias ('@common/models ' ), [
158+ 'only ' => ['*Faker.php ' ],
159+ 'except ' => ['BaseModelFaker.php ' ],
160+ ]);
161+
162+ $ sortedFakersModels = static ::sortModels ($ fakers , '\\common \\models \\faker \\' );
163+ return $ sortedFakersModels ;
164+ }
149165}
0 commit comments