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



这可能以前已经回答过好几次了。我正试图通过拉拉威尔的作曲家来运行自动加载器。

运行composer dump-autoload时出现此错误

Class AppAdmin located in C:/xampp/htdocs/test/appModelsAdmin.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 AppModels;
class Admin {}

这是因为PSR-4在文件路径之外工作,子命名空间是要到达目的类的目录,并且这些目录必须与子命名空间的情况相匹配。类名也是如此,例如,文件必须与类的文件相匹配。

IF您的基本目录是/src,链接到供应商命名空间Mitra,则/src根文件夹中的类将仅具有命名空间Mitra如果您在根目录中有一个文件夹;/src/Models然后命名空间将为MitraModels

PSR-4的规范是一个相当简短的规范,并且有很好的文档记录,如果您有理解困难,我建议您阅读它。

最新更新