php - Laravel 中的 psr-4 自动加载问题

标签 php laravel namespaces autoload psr-4

可能这个问题之前已经回答过好几次了。我正在尝试通过 Laravel 中的 Composer 运行自动加载器。
运行 composer dump-autoload 时出现此错误

Class App\Admin located in C:/xampp/htdocs/test/app\Models\Admin.php does not comply with psr-4 autoloading standard. Skipping.
我已经检查了文件系统中的大小写,对我来说看起来没问题。
Composer 版本是最新的 2.0.14。
Composer.json --
"autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },
文件夹结构为:
<root_project>
 app
  Models
   Admin.php
   .....
 config
 public
 ...
app/Models/Admin.php :
namespace App;

use ....
use ....

class Admin extends Authenticatable implements HasMedia
{
......
请任何帮助表示高度赞赏。

最佳答案

您的模型中的命名空间错误,您缺少 Model 的子命名空间并且只有供应商命名空间,在 Laravel 框架中设置为 App ,指向 app文件夹作为其基础。
更改您的 Admin包含子命名空间的模型命名空间将解决您的问题。

namespace App\Models;

class Admin {}
这是因为 PSR-4 不使用文件路径,子命名空间是到达目标类的目录,并且这些目录必须与子命名空间的情况相匹配。类名也是如此,例如,文件必须与类名相匹配。
中频 您的基本目录是 /src ,链接到供应商命名空间 米特拉 , /src的根文件夹中的一个类将只有命名空间 Mitra . 中频 您在根目录中有一个文件夹; /src/Models 那么命名空间将是 Mitra\Models .
specification因为 PSR-4 是一个相当短的规范并且有很好的文档记录,如果您在理解上有困难,我建议您阅读它。

关于php - Laravel 中的 psr-4 自动加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67947310/

相关文章:

php - 在 SQL 和 PHP 中处理用户输入字符串的正确方法?

c# - 用于 Mediawiki 标记的开源解析器代码

c# - 在 PHP 中执行 C# 应用程序

laravel、sail shell 和sail artisan 命令停止工作

php - 不推荐使用整数进行注册日期声明,请改用 DateTimeImmutable 对象

javascript - 如何将 slider 轮播的最小高度设置为等于图像的不同高度?

github - 在拉取请求中保留/丢弃贡献者的命名空间的礼节是什么?

.net - 通过 wsHttpBinding 在 PHP 中调用 WCF WebService

typescript - 在内部匿名函数中引用外部命名空间函数

php - Adwords API ReportDefinitionService : ReportDefinition not found