“无法声明类 App\Http\Controllers\category,因为该名称已在使用中”

Posted

技术标签:

【中文标题】“无法声明类 App\\Http\\Controllers\\category,因为该名称已在使用中”【英文标题】:"Cannot declare class App\Http\Controllers\category because the name is already in use"“无法声明类 App\Http\Controllers\category,因为该名称已在使用中” 【发布时间】:2019-09-24 13:41:48 【问题描述】:

“无法声明类 App\Http\Controllers\category,因为该名称已在使用中”。如何解决它,请有人解释我

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\category;
class category extends Controller


    public function index()
        return view('admin.category.category_entry');
    

    public function save(Request $request)
        $categoryentry=new category();
        $categoryentry->name=$request->name;
        $categoryentry->description=$request-> description;
        $categoryentry->publication_status=$request->publication_status;
        $categoryentry->save();
        return redirect('/category/save')->with('msg','Data inserted');
    

【问题讨论】:

应该是 CategoryController no Category 所以你没有同名的模型类和控制器类 模型名称和控制器名称必须不同..为什么你使用相似的名称..这会产生歧义。 【参考方案1】:

您的控制器类 category 与您的模型类 category 发生名称冲突。 将您的控制器更改为 CategoryController,它应该可以解决问题,并且类名应该始终以大写开头。

你可以在不同的命名空间中声明同名的类,但是你不能将这个类调用到另一个同名的类中,这会导致名称冲突。因此,由于以下原因,您的错误正在弹出:-

use App\category; 
class category extends Controller

您需要更改其中任何一个的名称。

【讨论】:

他们肯定在一个单独的命名空间中吗?这可能只是一个错误的过去错误,你有错误的命名空间......没有理由他不能将模型和控制器命名为“类别”,只要它们位于不同的命名空间中...... 是的,他当然可以,但他不能这样做use App\category; class category extends Controller。 ; 我遇到了这个问题,composer dump-autoload 没有解决,然后使用这个解决方案***.com/a/64385832/308578【参考方案2】:

问题是您在此文件中使用了 2 个名为 category 的类。 App\categoryApp\Http\Controllers\category

您有 2 个选项来解决此问题:

    通过更改类名解决名称冲突。例如 将App\Http\Controllers\category 更改为 App\Http\Controllers\categoryController 将导入的App\category 重命名为不会在此文件中存在的其他名称,如下所示:
use App\category as categoryModel;

// ...


public function save(Request $request)

    $categoryentry=new categoryModel();

    // ...


希望对你有帮助。

【讨论】:

【参考方案3】:

我认为你应该使用这段代码。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\category AS category_model;
class category extends Controller


    public function index()
        return view('admin.category.category_entry');
    

    public function save(Request $request)
        $categoryentry= new category_model;
        $categoryentry->name=$request->name;
        $categoryentry->description=$request->description;
        $categoryentry->publication_status=$request->publication_status;
        $categoryentry->save();
        return redirect('/category/save')->with('msg','Data inserted');
    

希望对你有所帮助。

【讨论】:

以上是关于“无法声明类 App\Http\Controllers\category,因为该名称已在使用中”的主要内容,如果未能解决你的问题,请参考以下文章