我可以在 laravel 中使用相同的控制器名称 2 次或更多次吗?

Can I use same controller name 2 or more times in laravel?

我在 laravel 8 项目的 2 个不同文件夹中有相同的控制器名称(假设 Login.php)。在路由中,如果我按以下方式使用它们,它会显示错误。

use App\Http\Controllers\my_controller1\Login;
use App\Http\Controllers\my_controller2\Login;

错误看起来像

Symfony\Component\ErrorHandler\Error\FatalError

Cannot use App\Http\Controllers\my_controller2\Login as Login because the name is already in use

如果我用下面的方法不会报错:

use App\Http\Controllers\my_controller1\Login;

Route::get('/loginA',[App\Http\Controllers\my_controller2\Login::class,'abc']);

Route::get('/loginB',[Login::class,'abc']);

注意:文件夹和控制器名称仅供假设。

There is 2 different use statements. use App\Http\Controllers\my_controller1\Login; and use App\Http\Controllers\my_controller2\Login;

如果您在同一个文件中同时使用它们,则需要为其中之一设置别名。

use App\Http\Controllers\my_controller2\Login as Login2;

你可以通过像这样导入它们来给它们起不同的名字

use App\Http\Controllers\my_controller1\Login as Login1;
use App\Http\Controllers\my_controller2\Login as Login2;

但是,不需要有两个同名的控制器,因为这表明它们负责同一件事并且可能可以合并。

还有,你的命名好像有点不对劲;考虑对文件夹名称使用驼峰命名法(例如 \customControllers\ 而不是 \my_controller1\),并将控制器命名为 LoginController 而不是 Login)。