@@ -1,7 +1,6 @@ |
||
1 | 1 | <?php namespace Wn\Generators\Commands; |
2 | 2 | |
3 | 3 | |
4 | -use InvalidArgumentException; |
|
5 | 4 | use Illuminate\Support\Str; |
6 | 5 | |
7 | 6 | class ResourceCommand extends BaseCommand { |
@@ -62,7 +62,7 @@ discard block |
||
62 | 62 | ]); |
63 | 63 | |
64 | 64 | // generating REST actions trait if doesn't exist |
65 | - if(! $this->fs->exists('./app/Http/Controllers/RESTActions.php')){ |
|
65 | + if (!$this->fs->exists('./app/Http/Controllers/RESTActions.php')) { |
|
66 | 66 | $this->call('wn:controller:rest-actions'); |
67 | 67 | } |
68 | 68 | // generating the controller and routes |
@@ -94,10 +94,10 @@ discard block |
||
94 | 94 | protected function parseFields() |
95 | 95 | { |
96 | 96 | $fields = $this->argument('fields'); |
97 | - if($this->option('parsed')){ |
|
97 | + if ($this->option('parsed')) { |
|
98 | 98 | $this->fields = $fields; |
99 | 99 | } else { |
100 | - if(! $fields){ |
|
100 | + if (!$fields) { |
|
101 | 101 | $this->fields = []; |
102 | 102 | } else { |
103 | 103 | $this->fields = $this->getArgumentParser('fields') |
@@ -121,7 +121,7 @@ discard block |
||
121 | 121 | |
122 | 122 | protected function fieldsHavingTag($tag) |
123 | 123 | { |
124 | - return array_map(function($field){ |
|
124 | + return array_map(function($field) { |
|
125 | 125 | return $field['name']; |
126 | 126 | }, array_filter($this->fields, function($field) use($tag){ |
127 | 127 | return in_array($tag, $field['tags']); |
@@ -130,19 +130,19 @@ discard block |
||
130 | 130 | |
131 | 131 | protected function rules() |
132 | 132 | { |
133 | - return array_map(function($field){ |
|
133 | + return array_map(function($field) { |
|
134 | 134 | return [ |
135 | 135 | 'name' => $field['name'], |
136 | 136 | 'rule' => $field['rules'] |
137 | 137 | ]; |
138 | - }, array_filter($this->fields, function($field){ |
|
138 | + }, array_filter($this->fields, function($field) { |
|
139 | 139 | return !empty($field['rules']); |
140 | 140 | })); |
141 | 141 | } |
142 | 142 | |
143 | 143 | protected function schema() |
144 | 144 | { |
145 | - return array_map(function($field){ |
|
145 | + return array_map(function($field) { |
|
146 | 146 | return array_merge([[ |
147 | 147 | 'name' => $field['name'], |
148 | 148 | 'args' => [] |
@@ -153,14 +153,14 @@ discard block |
||
153 | 153 | protected function foreignKeys() |
154 | 154 | { |
155 | 155 | $belongsTo = $this->option('belongs-to'); |
156 | - if(! $belongsTo) { |
|
156 | + if (!$belongsTo) { |
|
157 | 157 | return []; |
158 | 158 | } |
159 | 159 | $relations = $this->getArgumentParser('relations')->parse($belongsTo); |
160 | - return array_map(function($relation){ |
|
160 | + return array_map(function($relation) { |
|
161 | 161 | $name = $relation['model'] ? $relation['model'] : $relation['name']; |
162 | 162 | $index = strrpos($name, "\\"); |
163 | - if($index) { |
|
163 | + if ($index) { |
|
164 | 164 | $name = substr($name, $index + 1); |
165 | 165 | } |
166 | 166 | return Str::snake(Str::singular($name)) . '_id'; |
@@ -181,12 +181,12 @@ discard block |
||
181 | 181 | |
182 | 182 | protected function factoryFields() |
183 | 183 | { |
184 | - return array_map(function($field){ |
|
184 | + return array_map(function($field) { |
|
185 | 185 | return [ |
186 | 186 | 'name' => $field['name'], |
187 | 187 | 'type' => $field['factory'] |
188 | 188 | ]; |
189 | - }, array_filter($this->fields, function($field){ |
|
189 | + }, array_filter($this->fields, function($field) { |
|
190 | 190 | return isset($field['factory']) && $field['factory']; |
191 | 191 | })); |
192 | 192 | } |
@@ -1,6 +1,5 @@ |
||
1 | 1 | <?php namespace Wn\Generators\Commands; |
2 | 2 | |
3 | -use InvalidArgumentException; |
|
4 | 3 | use Symfony\Component\Yaml\Yaml; |
5 | 4 | use Illuminate\Support\Str; |
6 | 5 |
@@ -75,7 +75,7 @@ |
||
75 | 75 | |
76 | 76 | protected function getResourceParams($modelName, $i) |
77 | 77 | { |
78 | - $i['name'] = Str::snake($modelName); |
|
78 | + $i['name'] = Str::snake($modelName); |
|
79 | 79 | |
80 | 80 | foreach(['hasMany', 'hasOne', 'add', 'belongsTo', 'belongsToMany'] as $relation){ |
81 | 81 | if(isset($i[$relation])){ |
@@ -24,10 +24,10 @@ discard block |
||
24 | 24 | $content = Yaml::parse($content); |
25 | 25 | |
26 | 26 | $modelIndex = 0; |
27 | - foreach ($content as $model => $i){ |
|
27 | + foreach ($content as $model => $i) { |
|
28 | 28 | $i = $this->getResourceParams($model, $i); |
29 | - $migrationName = 'Create' . ucwords(Str::plural($i['name'])); |
|
30 | - $migrationFile = date('Y_m_d_His') . '-' . str_pad($modelIndex , 3, 0, STR_PAD_LEFT) . '_' . Str::snake($migrationName) . '_table'; |
|
29 | + $migrationName = 'Create' . ucwords(Str::plural($i['name'])); |
|
30 | + $migrationFile = date('Y_m_d_His') . '-' . str_pad($modelIndex, 3, 0, STR_PAD_LEFT) . '_' . Str::snake($migrationName) . '_table'; |
|
31 | 31 | |
32 | 32 | $options = [ |
33 | 33 | 'name' => $i['name'], |
@@ -77,34 +77,34 @@ discard block |
||
77 | 77 | { |
78 | 78 | $i['name'] = Str::snake($modelName); |
79 | 79 | |
80 | - foreach(['hasMany', 'hasOne', 'add', 'belongsTo', 'belongsToMany'] as $relation){ |
|
81 | - if(isset($i[$relation])){ |
|
80 | + foreach (['hasMany', 'hasOne', 'add', 'belongsTo', 'belongsToMany'] as $relation) { |
|
81 | + if (isset($i[$relation])) { |
|
82 | 82 | $i[$relation] = $this->convertArray($i[$relation], ' ', ','); |
83 | 83 | } else { |
84 | 84 | $i[$relation] = false; |
85 | 85 | } |
86 | 86 | } |
87 | 87 | |
88 | - if($i['belongsToMany']){ |
|
88 | + if ($i['belongsToMany']) { |
|
89 | 89 | $relations = $this->getArgumentParser('relations')->parse($i['belongsToMany']); |
90 | - foreach ($relations as $relation){ |
|
90 | + foreach ($relations as $relation) { |
|
91 | 91 | $table = ''; |
92 | 92 | |
93 | - if(! $relation['model']){ |
|
93 | + if (!$relation['model']) { |
|
94 | 94 | $table = Str::snake($relation['name']); |
95 | 95 | } else { |
96 | 96 | $names = array_reverse(explode("\\", $relation['model'])); |
97 | 97 | $table = Str::snake($names[0]); |
98 | 98 | } |
99 | 99 | |
100 | - $tables = [ Str::singular($table), $i['name'] ]; |
|
100 | + $tables = [Str::singular($table), $i['name']]; |
|
101 | 101 | sort($tables); |
102 | 102 | $this->pivotTables[] = $tables; |
103 | 103 | } |
104 | 104 | } |
105 | 105 | |
106 | 106 | $fields = []; |
107 | - foreach($i['fields'] as $name => $value) { |
|
107 | + foreach ($i['fields'] as $name => $value) { |
|
108 | 108 | $value['name'] = $name; |
109 | 109 | $fields[] = $this->serializeField($value); |
110 | 110 | } |
@@ -125,7 +125,7 @@ discard block |
||
125 | 125 | |
126 | 126 | $string = "{$name};{$schema};{$rules};{$tags}"; |
127 | 127 | |
128 | - if(isset($field['factory']) && !empty($field['factory'])){ |
|
128 | + if (isset($field['factory']) && !empty($field['factory'])) { |
|
129 | 129 | $string .= ';' . $field['factory']; |
130 | 130 | } |
131 | 131 | |
@@ -134,7 +134,7 @@ discard block |
||
134 | 134 | |
135 | 135 | protected function convertArray($list, $old, $new) |
136 | 136 | { |
137 | - return implode($new, array_filter(explode($old, $list), function($item){ |
|
137 | + return implode($new, array_filter(explode($old, $list), function($item) { |
|
138 | 138 | return !empty($item); |
139 | 139 | })); |
140 | 140 | } |
@@ -67,7 +67,7 @@ |
||
67 | 67 | protected function getController() |
68 | 68 | { |
69 | 69 | $controller = $this->option('controller'); |
70 | - if(! $controller){ |
|
70 | + if (!$controller) { |
|
71 | 71 | $controller = ucwords(\Illuminate\Support\Str::plural(\Illuminate\Support\Str::camel($this->argument('resource')))) . 'Controller'; |
72 | 72 | } |
73 | 73 | return $controller; |
@@ -45,7 +45,7 @@ |
||
45 | 45 | } |
46 | 46 | |
47 | 47 | protected function getSeederName($resources) { |
48 | - $resources = array_map(function($resource){ |
|
48 | + $resources = array_map(function($resource) { |
|
49 | 49 | return ucwords(\Illuminate\Support\Str::camel($resource)); |
50 | 50 | }, $resources); |
51 | 51 | return implode('', $resources) . 'TableSeeder'; |
@@ -34,10 +34,10 @@ discard block |
||
34 | 34 | ->get(); |
35 | 35 | |
36 | 36 | $file = $this->option('file'); |
37 | - if(! $file){ |
|
37 | + if (!$file) { |
|
38 | 38 | $file = date('Y_m_d_His_') . $snakeName . '_table'; |
39 | 39 | $this->deleteOldMigration($snakeName); |
40 | - }else{ |
|
40 | + } else { |
|
41 | 41 | $this->deleteOldMigration($file); |
42 | 42 | } |
43 | 43 | |
@@ -46,10 +46,10 @@ discard block |
||
46 | 46 | |
47 | 47 | protected function deleteOldMigration($fileName) |
48 | 48 | { |
49 | - foreach (new \DirectoryIterator("./database/migrations/") as $fileInfo){ |
|
50 | - if($fileInfo->isDot()) continue; |
|
49 | + foreach (new \DirectoryIterator("./database/migrations/") as $fileInfo) { |
|
50 | + if ($fileInfo->isDot()) continue; |
|
51 | 51 | |
52 | - if(strpos($fileInfo->getFilename(), $fileName) !== FALSE){ |
|
52 | + if (strpos($fileInfo->getFilename(), $fileName) !== FALSE) { |
|
53 | 53 | unlink($fileInfo->getPathname()); |
54 | 54 | } |
55 | 55 | } |
@@ -58,12 +58,12 @@ discard block |
||
58 | 58 | protected function getSchema() |
59 | 59 | { |
60 | 60 | $schema = $this->option('schema'); |
61 | - if(! $schema){ |
|
61 | + if (!$schema) { |
|
62 | 62 | return $this->spaces(12) . "// Schema declaration"; |
63 | 63 | } |
64 | 64 | |
65 | 65 | $items = $schema; |
66 | - if( ! $this->option('parsed')){ |
|
66 | + if (!$this->option('parsed')) { |
|
67 | 67 | $items = $this->getArgumentParser('schema')->parse($schema); |
68 | 68 | } |
69 | 69 | |
@@ -97,7 +97,7 @@ discard block |
||
97 | 97 | $name = $parts[0]['name']; |
98 | 98 | $parts[1]['args'] = array_merge(["'{$name}'"], $parts[1]['args']); |
99 | 99 | unset($parts[0]); |
100 | - $parts = array_map(function($part){ |
|
100 | + $parts = array_map(function($part) { |
|
101 | 101 | return '->' . $part['name'] . '(' . implode(', ', $part['args']) . ')'; |
102 | 102 | }, $parts); |
103 | 103 | return " \$table" . implode('', $parts) . ';'; |
@@ -106,12 +106,12 @@ discard block |
||
106 | 106 | protected function getConstraints() |
107 | 107 | { |
108 | 108 | $keys = $this->option('keys'); |
109 | - if(! $keys){ |
|
109 | + if (!$keys) { |
|
110 | 110 | return $this->spaces(12) . "// Constraints declaration"; |
111 | 111 | } |
112 | 112 | |
113 | 113 | $items = $keys; |
114 | - if(! $this->option('parsed')){ |
|
114 | + if (!$this->option('parsed')) { |
|
115 | 115 | $items = $this->getArgumentParser('foreign-keys')->parse($keys); |
116 | 116 | } |
117 | 117 | |
@@ -125,10 +125,10 @@ discard block |
||
125 | 125 | |
126 | 126 | protected function getConstraintDeclaration($key) |
127 | 127 | { |
128 | - if(! $key['column']){ |
|
128 | + if (!$key['column']) { |
|
129 | 129 | $key['column'] = 'id'; |
130 | 130 | } |
131 | - if(! $key['table']){ |
|
131 | + if (!$key['table']) { |
|
132 | 132 | $key['table'] = \Illuminate\Support\Str::plural(substr($key['name'], 0, strlen($key['name']) - 3)); |
133 | 133 | } |
134 | 134 | |
@@ -140,7 +140,7 @@ discard block |
||
140 | 140 | ]) |
141 | 141 | ->get(); |
142 | 142 | |
143 | - if($key['on_delete']){ |
|
143 | + if ($key['on_delete']) { |
|
144 | 144 | $constraint .= PHP_EOL . $this->getTemplate('migration/on-constraint') |
145 | 145 | ->with([ |
146 | 146 | 'event' => 'Delete', |
@@ -149,7 +149,7 @@ discard block |
||
149 | 149 | ->get(); |
150 | 150 | } |
151 | 151 | |
152 | - if($key['on_update']){ |
|
152 | + if ($key['on_update']) { |
|
153 | 153 | $constraint .= PHP_EOL . $this->getTemplate('migration/on-constraint') |
154 | 154 | ->with([ |
155 | 155 | 'event' => 'Update', |
@@ -3,7 +3,7 @@ discard block |
||
3 | 3 | |
4 | 4 | class ModelCommand extends BaseCommand { |
5 | 5 | |
6 | - protected $signature = 'wn:model |
|
6 | + protected $signature = 'wn:model |
|
7 | 7 | {name : Name of the model.} |
8 | 8 | {--fillable= : the fillable fields.} |
9 | 9 | {--guarded= : the guarded fields.} |
@@ -20,7 +20,7 @@ discard block |
||
20 | 20 | {--force= : override the existing files} |
21 | 21 | '; |
22 | 22 | |
23 | - protected $description = 'Generates a model class for a RESTfull resource'; |
|
23 | + protected $description = 'Generates a model class for a RESTfull resource'; |
|
24 | 24 | |
25 | 25 | public function handle() |
26 | 26 | { |
@@ -46,9 +46,9 @@ discard block |
||
46 | 46 | |
47 | 47 | protected function getAsArrayFields($arg, $isOption = true) |
48 | 48 | { |
49 | - $arg = ($isOption) ? $this->option($arg) : $this->argument($arg); |
|
49 | + $arg = ($isOption) ? $this->option($arg) : $this->argument($arg); |
|
50 | 50 | if(is_string($arg)){ |
51 | - $arg = explode(',', $arg); |
|
51 | + $arg = explode(',', $arg); |
|
52 | 52 | } else if(! is_array($arg)) { |
53 | 53 | $arg = []; |
54 | 54 | } |
@@ -59,7 +59,7 @@ discard block |
||
59 | 59 | |
60 | 60 | protected function getNamespace() |
61 | 61 | { |
62 | - return str_replace(' ', '\\', ucwords(str_replace('/', ' ', $this->option('path')))); |
|
62 | + return str_replace(' ', '\\', ucwords(str_replace('/', ' ', $this->option('path')))); |
|
63 | 63 | } |
64 | 64 | |
65 | 65 | protected function getRelations() |
@@ -45,6 +45,9 @@ discard block |
||
45 | 45 | $this->save($content, "./App/Models/{$name}.php", "{$name} model"); |
46 | 46 | } |
47 | 47 | |
48 | + /** |
|
49 | + * @param string $arg |
|
50 | + */ |
|
48 | 51 | protected function getAsArrayFields($arg, $isOption = true) |
49 | 52 | { |
50 | 53 | $arg = ($isOption) ? $this->option($arg) : $this->argument($arg); |
@@ -79,6 +82,9 @@ discard block |
||
79 | 82 | return implode(PHP_EOL, $relations); |
80 | 83 | } |
81 | 84 | |
85 | + /** |
|
86 | + * @param string $option |
|
87 | + */ |
|
82 | 88 | protected function getImages($option) |
83 | 89 | { |
84 | 90 | $images = []; |
@@ -106,6 +112,10 @@ discard block |
||
106 | 112 | return implode(PHP_EOL, $media); |
107 | 113 | } |
108 | 114 | |
115 | + /** |
|
116 | + * @param string $type |
|
117 | + * @param string $option |
|
118 | + */ |
|
109 | 119 | protected function getRelationsByType($type, $option, $withTimestamps = false) |
110 | 120 | { |
111 | 121 | $relations = []; |
@@ -48,12 +48,12 @@ discard block |
||
48 | 48 | protected function getAsArrayFields($arg, $isOption = true) |
49 | 49 | { |
50 | 50 | $arg = ($isOption) ? $this->option($arg) : $this->argument($arg); |
51 | - if(is_string($arg)){ |
|
51 | + if (is_string($arg)) { |
|
52 | 52 | $arg = explode(',', $arg); |
53 | - } else if(! is_array($arg)) { |
|
53 | + } else if (!is_array($arg)) { |
|
54 | 54 | $arg = []; |
55 | 55 | } |
56 | - return implode(', ', array_map(function($item){ |
|
56 | + return implode(', ', array_map(function($item) { |
|
57 | 57 | return '"' . $item . '"'; |
58 | 58 | }, $arg)); |
59 | 59 | } |
@@ -72,7 +72,7 @@ discard block |
||
72 | 72 | $this->getRelationsByType('belongsToMany', 'belongs-to-many', true) |
73 | 73 | ); |
74 | 74 | |
75 | - if(empty($relations)){ |
|
75 | + if (empty($relations)) { |
|
76 | 76 | return " // Relationships"; |
77 | 77 | } |
78 | 78 | |
@@ -83,14 +83,14 @@ discard block |
||
83 | 83 | { |
84 | 84 | $images = []; |
85 | 85 | $option = $this->option($option); |
86 | - if($option){ |
|
86 | + if ($option) { |
|
87 | 87 | |
88 | 88 | $items = $this->getArgumentParser('images')->parse($option); |
89 | 89 | |
90 | 90 | $template = 'model/image'; |
91 | 91 | $template = $this->getTemplate($template); |
92 | 92 | foreach ($items as $item) { |
93 | - if(! $item['image']){ |
|
93 | + if (!$item['image']) { |
|
94 | 94 | $item['image'] = "get" . str_replace(' ', '', ucwords(str_replace('_', ' ', $item['name']))) . "Attribute"; |
95 | 95 | } |
96 | 96 | $images[] = $template->with($item)->get(); |
@@ -99,7 +99,7 @@ discard block |
||
99 | 99 | |
100 | 100 | $media = array_merge([], $images); |
101 | 101 | |
102 | - if(empty($media)){ |
|
102 | + if (empty($media)) { |
|
103 | 103 | return " // Media methods"; |
104 | 104 | } |
105 | 105 | |
@@ -110,7 +110,7 @@ discard block |
||
110 | 110 | { |
111 | 111 | $relations = []; |
112 | 112 | $option = $this->option($option); |
113 | - if($option){ |
|
113 | + if ($option) { |
|
114 | 114 | |
115 | 115 | $items = $this->getArgumentParser('relations')->parse($option); |
116 | 116 | |
@@ -118,9 +118,9 @@ discard block |
||
118 | 118 | $template = $this->getTemplate($template); |
119 | 119 | foreach ($items as $item) { |
120 | 120 | $item['type'] = $type; |
121 | - if(! $item['model']){ |
|
121 | + if (!$item['model']) { |
|
122 | 122 | $item['model'] = $this->getNamespace() . '\\' . ucwords(\Illuminate\Support\Str::singular($item['name'])); |
123 | - } else if(strpos($item['model'], '\\') === false ){ |
|
123 | + } else if (strpos($item['model'], '\\') === false) { |
|
124 | 124 | $item['model'] = $this->getNamespace() . '\\' . $item['model']; |
125 | 125 | } |
126 | 126 | $relations[] = $template->with($item)->get(); |
@@ -132,11 +132,11 @@ discard block |
||
132 | 132 | protected function getRules() |
133 | 133 | { |
134 | 134 | $rules = $this->option('rules'); |
135 | - if(! $rules){ |
|
135 | + if (!$rules) { |
|
136 | 136 | return " // Validation rules"; |
137 | 137 | } |
138 | 138 | $items = $rules; |
139 | - if(! $this->option('parsed')){ |
|
139 | + if (!$this->option('parsed')) { |
|
140 | 140 | $items = $this->getArgumentParser('rules')->parse($rules); |
141 | 141 | } |
142 | 142 | $rules = []; |
@@ -5,33 +5,33 @@ |
||
5 | 5 | |
6 | 6 | class ControllerCommand extends BaseCommand { |
7 | 7 | |
8 | - protected $signature = 'wn:controller |
|
8 | + protected $signature = 'wn:controller |
|
9 | 9 | {model : Name of the model (with namespace if not App)} |
10 | 10 | {--no-routes= : without routes} |
11 | 11 | {--force= : override the existing files} |
12 | 12 | {--laravel : Use Laravel style route definitions} |
13 | 13 | '; |
14 | 14 | |
15 | - protected $description = 'Generates RESTful controller using the RESTActions trait'; |
|
15 | + protected $description = 'Generates RESTful controller using the RESTActions trait'; |
|
16 | 16 | |
17 | 17 | public function handle() |
18 | 18 | { |
19 | - $model = $this->argument('model'); |
|
20 | - $name = ''; |
|
21 | - if(strrpos($model, "\\") === false){ |
|
22 | - $name = $model; |
|
23 | - $model = "App\\Models\\" . $model; |
|
24 | - } else { |
|
25 | - $name = explode("\\", $model); |
|
26 | - $name = $name[count($name) - 1]; |
|
27 | - } |
|
19 | + $model = $this->argument('model'); |
|
20 | + $name = ''; |
|
21 | + if(strrpos($model, "\\") === false){ |
|
22 | + $name = $model; |
|
23 | + $model = "App\\Models\\" . $model; |
|
24 | + } else { |
|
25 | + $name = explode("\\", $model); |
|
26 | + $name = $name[count($name) - 1]; |
|
27 | + } |
|
28 | 28 | $controller = ucwords(\Illuminate\Support\Str::plural($name)) . 'Controller'; |
29 | 29 | $content = $this->getTemplate('controller') |
30 | - ->with([ |
|
31 | - 'name' => $controller, |
|
32 | - 'model' => $model |
|
33 | - ]) |
|
34 | - ->get(); |
|
30 | + ->with([ |
|
31 | + 'name' => $controller, |
|
32 | + 'model' => $model |
|
33 | + ]) |
|
34 | + ->get(); |
|
35 | 35 | |
36 | 36 | $this->save($content, "./app/Http/Controllers/{$controller}.php", "{$controller}"); |
37 | 37 | if(! $this->option('no-routes')){ |
@@ -18,7 +18,7 @@ discard block |
||
18 | 18 | { |
19 | 19 | $model = $this->argument('model'); |
20 | 20 | $name = ''; |
21 | - if(strrpos($model, "\\") === false){ |
|
21 | + if (strrpos($model, "\\") === false) { |
|
22 | 22 | $name = $model; |
23 | 23 | $model = "App\\Models\\" . $model; |
24 | 24 | } else { |
@@ -34,7 +34,7 @@ discard block |
||
34 | 34 | ->get(); |
35 | 35 | |
36 | 36 | $this->save($content, "./app/Http/Controllers/{$controller}.php", "{$controller}"); |
37 | - if(! $this->option('no-routes')){ |
|
37 | + if (!$this->option('no-routes')) { |
|
38 | 38 | $options = [ |
39 | 39 | 'resource' => \Illuminate\Support\Str::snake($name, '-'), |
40 | 40 | '--controller' => $controller, |