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



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

use AppHttpControllersmy_controller1Login;
use AppHttpControllersmy_controller2Login;

错误看起来像

Symfony\Component\ErrorHandler\Error\FatalError

无法使用App\Http\Controllers\my_controller2\Login作为登录名,因为该名称已在使用

如果我以以下方式使用,它不会显示错误:

use AppHttpControllersmy_controller1Login;

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

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

有两种不同的use语句。CCD_ 2和CCD_ 3

如果在同一文件中同时使用其中一个,则需要对其进行别名。

use AppHttpControllersmy_controller2Login as Login2;

您可以通过像这样导入它们来给它们不同的名称

use AppHttpControllersmy_controller1Login as Login1;
use AppHttpControllersmy_controller2Login as Login2;

然而,不应该有两个同名的控制器,因为这表明它们负责相同的事情,并且可能会合并。

此外,您的命名似乎有点偏离;考虑对文件夹名称使用camelBase(例如customControllers而不是my_controller1(,并仅将控制器命名为LoginController而不是Login(请参见Laravel的命名约定(。

最新更新