【问题标题】:Laravel - class in namespace not foundLaravel - 未找到命名空间中的类
【发布时间】:2021-12-31 16:27:42
【问题描述】:

我有这个模型类(文件名为 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

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

谢谢!!!

【问题讨论】:

  • 添加反斜杠并修复命名空间,如dd(\App\Models\Audit_Codes::MSG) 将修复该问题,或通过导入dd(Audit_Codes::MSG) 引用。旁注,型号名称是 StudlyCase 和单数,所以 Audit_Codes 应该是 AuditCode
  • 如果我添加双反斜杠错误是找不到类“App\Models\Audit\Audit_Codes”,如果我只使用一个反斜杠错误是找不到类“App\Models\Audit\Audit_Codes”,并且使用“use”指令的错误是相同的:(
  • 抱歉,不得不多次编辑评论(重新阅读您的问题)。现在应该是正确的???一个反斜杠,你有一个额外的\Audit,它不属于namespace App\Models;。立即尝试
  • 谢谢!!将课程分开就可以了.. :)
  • 是的,我也很惊讶它没有起作用,我的目标是对所有公共代码进行分组。我也得多挖一点

标签: php laravel namespaces laravel-8


【解决方案1】:

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

应该可以解决你的问题。

【讨论】:

  • 这已通过我的最新评论添加为建议。在提出问题的人有机会尝试将其作为解决方案之前,请不要将此作为答案发布,如果这不正确,您的答案将被否决并删除。
  • 您很幸运,这是正确的解决方案,但请尝试遵循 Stackoverflow 上的预期行为准则。发布其他人的评论作为答案通常是不受欢迎的。
  • 除非是逐字复制另一个答案,否则任何答案都不应被视为抄袭他人。此外,根据现有的行为准则,如果是新成员,则称呼该人的语气应该有点柔和和欢迎。这已经在元数据中被讨论到死。
猜你喜欢
  • 2015-03-06
  • 2014-04-05
  • 2015-04-13
  • 1970-01-01
  • 2019-03-03
  • 2016-05-03
  • 2015-09-23
相关资源
最近更新 更多