可能这个问题之前已经回答过好几次了。我正在尝试通过 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/