Skip to content

Commit bc753cf

Browse files
Remove base controller if it doesn't exist (#49902)
* remove base controller if it doesn't exist * Apply fixes from StyleCI --------- Co-authored-by: StyleCI Bot <bot@styleci.io>
1 parent b63a4e6 commit bc753cf

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

src/Illuminate/Routing/Console/ControllerMakeCommand.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ protected function getDefaultNamespace($rootNamespace)
110110
*/
111111
protected function buildClass($name)
112112
{
113+
$rootNamespace = $this->rootNamespace();
113114
$controllerNamespace = $this->getNamespace($name);
114115

115116
$replace = [];
@@ -126,11 +127,20 @@ protected function buildClass($name)
126127
$replace['abort(404);'] = '//';
127128
}
128129

129-
$replace["use {$controllerNamespace}\Controller;\n"] = '';
130+
$baseControllerExists = class_exists($rootNamespace.'Http\Controllers\Controller');
130131

131-
return str_replace(
132+
if ($baseControllerExists) {
133+
$replace["use {$controllerNamespace}\Controller;\n"] = '';
134+
} else {
135+
$replace[' extends Controller'] = '';
136+
$replace["use {$rootNamespace}Http\Controllers\Controller;\n"] = '';
137+
}
138+
139+
$class = str_replace(
132140
array_keys($replace), array_values($replace), parent::buildClass($name)
133141
);
142+
143+
return $class;
134144
}
135145

136146
/**

tests/Integration/Generators/ControllerMakeCommandTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public function testItCanGenerateControllerFile()
1919
$this->assertFileContains([
2020
'namespace App\Http\Controllers;',
2121
'use Illuminate\Http\Request;',
22-
'class FooController extends Controller',
22+
'class FooController',
2323
], 'app/Http/Controllers/FooController.php');
2424

2525
$this->assertFileNotContains([
@@ -37,7 +37,7 @@ public function testItCanGenerateControllerFileWithInvokableTypeOption()
3737
$this->assertFileContains([
3838
'namespace App\Http\Controllers;',
3939
'use Illuminate\Http\Request;',
40-
'class FooController extends Controller',
40+
'class FooController',
4141
'public function __invoke(Request $request)',
4242
], 'app/Http/Controllers/FooController.php');
4343
}
@@ -50,7 +50,7 @@ public function testItCanGenerateControllerFileWithInvokableOption()
5050
$this->assertFileContains([
5151
'namespace App\Http\Controllers;',
5252
'use Illuminate\Http\Request;',
53-
'class FooController extends Controller',
53+
'class FooController',
5454
'public function __invoke(Request $request)',
5555
], 'app/Http/Controllers/FooController.php');
5656
}
@@ -103,7 +103,7 @@ public function testItCanGenerateControllerFileWithApiOption()
103103
$this->assertFileContains([
104104
'namespace App\Http\Controllers;',
105105
'use Illuminate\Http\Request;',
106-
'class FooController extends Controller',
106+
'class FooController',
107107
'public function index()',
108108
'public function store(Request $request)',
109109
'public function update(Request $request, string $id)',
@@ -124,7 +124,7 @@ public function testItCanGenerateControllerFileWithInvokableIgnoresApiOption()
124124
$this->assertFileContains([
125125
'namespace App\Http\Controllers;',
126126
'use Illuminate\Http\Request;',
127-
'class FooController extends Controller',
127+
'class FooController',
128128
'public function __invoke(Request $request)',
129129
], 'app/Http/Controllers/FooController.php');
130130

tests/Integration/Generators/ModelMakeCommandTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function testItCanGenerateModelFileWithControllerOption()
6969
$this->assertFileContains([
7070
'namespace App\Http\Controllers;',
7171
'use Illuminate\Http\Request;',
72-
'class FooController extends Controller',
72+
'class FooController',
7373
], 'app/Http/Controllers/FooController.php');
7474

7575
$this->assertFileNotContains([
@@ -156,7 +156,7 @@ public function testItCanGenerateNestedModelFileWithControllerOption()
156156
$this->assertFileContains([
157157
'namespace App\Http\Controllers;',
158158
'use Illuminate\Http\Request;',
159-
'class BarController extends Controller',
159+
'class BarController',
160160
], 'app/Http/Controllers/BarController.php');
161161

162162
$this->assertFilenameNotExists('database/factories/FooFactory.php');

0 commit comments

Comments
 (0)