Laravel - 找不到命名空间中的类

Laravel - class in namespace not found

提问人:Chico3001 提问时间:11/22/2021 最后编辑:Chico3001 更新时间:11/22/2021 访问量:465

问:

我有这个模型类(文件名为Audit.php):

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

abstract class AuditStatus
{
    const UNKNOWN = "UNKNOWN";
    const ERROR = "ERROR";
    const WARNING = "WARNING";
    const MSG = "MESSAGE";

    const EXCHANGE_UPDATE = "EXCHANGE_UPDATE";
    const PRICE_UPDATE = "PRICE_UPDATE";
}

class AuditCodes extends AuditStatus
{
}

class Audit extends Model
{
    use HasFactory;

    public $timestamps = false;

    protected $fillable = ['action', 'msg'];

    public static function Add($action, $msg){
        (new static)::insert(['action'=>$action, 'msg' => $msg]);
    }
}

我试图发出这样的新命令:

<?php

namespace App\Console\Commands;

use App\Models\AuditCodes;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class PriceCreate extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'price:create';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create prices';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        dd(AuditCodes::MSG);
    }
}

但是当我运行命令时,编译器抛出以下错误:

 Error

  Class "App\Console\Commands\App\Models\Audit\Audit_Codes" not found

  at C:\xampp\htdocs\bintest\app\Console\Commands\PriceCreate.php:46

谁能帮我如何声明我的班级?

谢谢!!!

PHP Laravel 命名空间 Laravel-8

评论

0赞 Tim Lewis 11/22/2021
添加反斜杠并修复命名空间,就像将修复该问题,或通过导入引用。旁注,模型名称是 StudlyCase 和单数,所以应该是 .dd(\App\Models\Audit_Codes::MSG)dd(Audit_Codes::MSG)Audit_CodesAuditCode
0赞 Chico3001 11/22/2021
如果我添加双反斜杠,则错误是未找到类“App\Models\Audit\Audit_Codes”,如果我只使用一个反斜杠,则错误是未找到类“App\Models\Audit\Audit_Codes”,并且使用“use”指令的错误相同:(
0赞 Tim Lewis 11/22/2021
对不起,不得不编辑评论几次(重新阅读您的问题)。现在🙂应该是正确的 单反斜杠,并且您有一个额外的 ,它不是 的一部分。立即试用\Auditnamespace App\Models;
1赞 Chico3001 11/22/2021
谢谢!!将班级分开就成功了。:)
1赞 Chico3001 11/22/2021
是的,我也对它没有用感到惊讶,我的目标是对所有通用代码进行分组。我也将不得不做更多的挖掘

答:

0赞 Fernando Rubio 11/22/2021 #1

尝试在自己的文件中声明每个类。 我的意思是,如果你有三个类:Audit、AuditCodes 和 AuditStatus 目录中还将有三个不同的文件,例如 和 。App\Models\App\Models\Audit.phpApp\Models\AuditCodes.phpApp\Models\AuditStatus.php

它应该是解决你的问题。

评论

1赞 Tim Lewis 11/22/2021
这已经通过我的最新评论添加为建议。请不要将其作为答案发布,直到提出问题的人有机会尝试将其作为解决方案,因为如果这是不正确的,您的答案将被否决并被删除。
0赞 Tim Lewis 11/22/2021
你很幸运,这是正确的解决方案,但请尽量遵循 Stackoverflow 上的预期行为准则。发布别人的评论作为答案通常是不受欢迎的。
1赞 itachi 11/22/2021
除非是逐字复制另一个答案,否则任何答案都不应被视为从其他答案复制而来。此外,根据现有的行为准则,如果成员是新成员,那么称呼该人的语气应该有点柔和和热情。这在元宇宙中已经讨论得死去活来。