Php Laravel命名空间错误:无法将用作,因为该名称已在使用中

Php Laravel命名空间错误:无法将用作,因为该名称已在使用中,php,laravel-5,Php,Laravel 5,我面临一个问题,控制器中的“use”语句抛出 Cannot use App\Enums\Division as Division because the name is already in use 部门枚举的结构如下所示: namespace App\Enums; use App\Enums; class Division extends Enum { ... } namespace App; use Carbon\Carbon; use App\Enums\Division; us

我面临一个问题,控制器中的“use”语句抛出

Cannot use App\Enums\Division as Division because the name is already in use
部门枚举的结构如下所示:

namespace App\Enums;

use App\Enums;

class Division extends Enum
{
...
}
namespace App;

use Carbon\Carbon;
use App\Enums\Division;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Employee extends Model
{
...
}
此枚举正在模型中使用,如下所示:

namespace App\Enums;

use App\Enums;

class Division extends Enum
{
...
}
namespace App;

use Carbon\Carbon;
use App\Enums\Division;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Employee extends Model
{
...
}
引发此异常的控制器具有以下结构:

namespace App\Http\Controllers;

use Carbon\Carbon;
use App\Employee;
use App\Division;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AttendanceController extends Controller
{
...
}
EmployeeController具有相同的结构,但未引发任何命名空间冲突错误

namespace App\Http\Controllers;

use Carbon\Carbon;
use App\Employee; 
use Illuminate\Http\Request;
use App\Enums\Month;
use App\Division;
use Illuminate\Support\Facades\Auth;

class EmployeeController extends Controller
{
...
}
我不确定这为什么会引起问题,因为我对EmployeeController类使用了相同的结构,而且它工作得非常完美注意:我还有一个名为Division的模型,因此我的AttendanceController有“use App\Division”,不要与枚举文件混淆


有人建议我需要App\Enums\Division的别名,但我的EmployeeController没有抱怨,我也不需要别名。其他人认为这是一个php问题——我使用的是7.0.12。在此方面的任何帮助都将不胜感激

为避免多次“使用”同一类,请将它们命名为别名。假设
App\Division
是一个模型:

use App\Division as DivisionModel;

并相应地更新对
部门的引用

为避免多次“使用”同一类,请将它们命名为别名。假设
App\Division
是一个模型:

use App\Division as DivisionModel;

并相应地更新对
部门的引用

如果没有完整的代码,很难确定(如果问题中添加了更好的示例,我将更新或删除此代码),但听起来您的文件很可能同时包含以下两个内容:

use App\Division;
以及:

它们都使用隐式别名
作为Division
,因此PHP抱怨说,当它看到单词
Division
时,它不知道是哪个别名


解决方法是在一行或两行中添加一个
as
子句,为它们提供一些不含糊的别名。

如果没有完整的代码,很难确定(如果问题中添加了更好的示例,我将更新或删除此代码),但听起来很可能您的文件同时包含以下两个内容:

use App\Division;
以及:

它们都使用隐式别名
作为Division
,因此PHP抱怨说,当它看到单词
Division
时,它不知道是哪个别名


解决方法是在一行或两行中添加一个
as
子句,为它们提供一些不含糊的其他别名。

如果枚举类在App\Enums命名空间中,分区也在命名空间中,则无需指定在分区PHP文件中使用App\Enums。但是,在控制器类中,您需要将Enum和Division类的正确路径指定为

// Division file
namespace App\Enums;

class Division extends Enum
{ ... }

// Controller File
namespace App\Http\Controllers;

use App\Enums\Division; 
use App\Enums\Enum;

class AttendanceController extends Controller
{ ... }

如果枚举类在App\Enums命名空间内,分区也在命名空间内,则无需指定在分区PHP文件中使用App\Enums。但是,在控制器类中,您需要将Enum和Division类的正确路径指定为

// Division file
namespace App\Enums;

class Division extends Enum
{ ... }

// Controller File
namespace App\Http\Controllers;

use App\Enums\Division; 
use App\Enums\Enum;

class AttendanceController extends Controller
{ ... }


我也面临同样的问题。我已经解决了这个问题。我用过两次相同的型号名称。所以我删除了一个模型名,问题就解决了

我也面临同样的问题。我已经解决了这个问题。我用过两次相同的型号名称。所以我删除了一个模型名,问题就解决了

名称空间名称和类名之间可能存在混淆。如何声明枚举类?枚举类声明为:namespace App\Enums;抽象类枚举{…}不确定格式在注释中是否正确。此外,Enum类位于名为app/Enums的目录中,而所有控制器都位于app/Http/controllers中。为什么要使用已在
use app\Enums中的名称空间?枚举类在哪里?在第一个代码中。@TuranZamanlı根据前面的注释,Enum类位于app/Enums(即app/Enums/Enum.php)中。我的控制器和模型分别位于app/Http/controllers和app/中。命名空间名称和类名之间可能存在混淆。如何声明枚举类?枚举类声明为:namespace App\Enums;抽象类枚举{…}不确定格式在注释中是否正确。此外,Enum类位于名为app/Enums的目录中,而所有控制器都位于app/Http/controllers中。为什么要使用已在
use app\Enums中的名称空间?枚举类在哪里?在第一个代码中。@TuranZamanlı根据前面的注释,Enum类位于app/Enums(即app/Enums/Enum.php)中。我的控制器和模型分别位于app/Http/controllers和app/中,但我忘了提到我有一个名为Division的模型。将更新问题。抱歉,Tom,但这并没有解决问题您可以使用别名来避免名称空间冲突,更新。是的,这是我最后的选择-我只是想我可以找到另一个选择:P。有趣的是,我的EmployeeController与AttendanceController具有相同的结构,但它没有引发任何名称空间冲突问题。它仅在使用AttendanceController时引发异常。并且您列出的“导入”是唯一使用的导入?是的,列出的导入是唯一使用的导入。供您参考:名称空间App\Http\Controllers;使用碳\碳;使用App\Employee;使用App\Division;使用Illumb\Support\Facades\Auth;类EmployeeController扩展控制器{…}忘记提到我有一个名为Division的模型。将更新问题。抱歉,Tom,但这并没有解决问题您可以使用别名来避免名称空间冲突,更新。是的,这是我最后的选择-我只是想我可以找到另一个选择:P。有趣的是,我的EmployeeController与AttendanceController具有相同的结构,但它没有引发任何名称空间冲突问题。它仅在使用AttendanceController时引发异常。并且您列出的“导入”是唯一使用的导入?是的,列出的导入是唯一使用的导入。供您参考:名称空间App\Http\Controllers;使用碳\碳;使用App\Employee;使用App\Division;使用Il