可能这个问题之前已经回答过好几次了。我正在尝试通过 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
{
......
非常感谢任何帮助。
答案 0 :(得分:1)
您的模型中的命名空间错误,您缺少 Model
的子命名空间并且只有供应商命名空间,在 Laravel 框架中设置为 App
,指向 { {1}} 文件夹作为其基础。
更改您的 app
模型命名空间以包含子命名空间将解决您的问题。
Admin
这是因为 PSR-4 不使用文件路径,子命名空间是到达目标类的目录,并且这些目录必须与子命名空间的情况相匹配。类名也是如此,例如,文件必须与类名相匹配。
IF 你的基目录是 namespace App\Models;
class Admin {}
,链接到供应商命名空间 Mitra,/src
根文件夹中的一个类将只有命名空间 /src
。 如果您在根目录中有一个文件夹; Mitra
THEN 命名空间将是 /src/Models
。
PSR-4 的 specification 是一个相当短的规范,并且有很好的文档记录,如果您在理解上有困难,我建议您阅读它。