提问人:Prithviraj Mitra 提问时间:6/12/2021 更新时间:6/12/2021 访问量:2178
Laravel 中的 psr-4 自动加载问题
psr-4 autoloading issue in Laravel
问:
可能这之前已经回答过好几次了。我正在尝试通过 Laravel 中的作曲家运行自动加载器。
我在运行时收到此错误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
{
......
请任何帮助,我们将不胜感激。
答:
1赞
Kim Hallberg
6/12/2021
#1
模型中的命名空间错误,您缺少 的子命名空间,并且只有 vendor 命名空间,在 Laravel 框架中设置为 ,指向文件夹作为其基础。Model
App
app
更改模型命名空间以包含子命名空间将解决您的问题。Admin
namespace App\Models;
class Admin {}
这是因为 PSR-4 在文件路径上工作,子命名空间是到达目标类所要经过的目录,并且这些目录必须与子命名空间的大小写匹配。类名也是如此,例如,文件必须与类名匹配。
如果您的基目录是 ,链接到供应商命名空间 Mitra,则根文件夹中的类将只有命名空间。如果您在根目录中有一个文件夹; 那么命名空间将是 ./src
/src
Mitra
/src/Models
Mitra\Models
PSR-4 的规范是一个相当短的规范,并且有很好的文档记录,如果您难以理解,我建议您阅读它。
上一个:模型不显示
评论