【发布时间】:2021-02-08 17:07:06
【问题描述】:
在我的项目中,我包含了一个我正在开发的包,它有一个 composer.json,其中包含以下自动加载条目:
(当然会被审查以免与我的公司发生麻烦)
{
"autoload": {
"psr-4": {
"Vendor\\Package\\": "src/Package"
}
}
}
主项目和包都有一个composer.json,这是来自包的composer.json
我也看到了一些只使用“Vendor\\”的例子,但这导致了完全相同的问题。
我需要版本标签上的包(来自 git 存储库),所以它应该正确获取并安装包。
任何时候 composer 运行自动加载,它都会抱怨命名空间不符合 PSR-4。我已经检查了大写,所有检查。它抱怨我项目中的几乎每个 php 文件。以下是文件结构的示例:
vendor
|- package
|- src
|- Package
|- PackageServiceProvider.php
PackageServiceProvider.php的命名空间是Vendor\Package,类是PackageServiceProvider。
据我所知,这就是它应该的样子。然而作曲家仍然给出弃用通知。
我应该提一下,我还尝试在我尝试过的所有事情(主要是改变大小写)之间运行composer clearcache,但这没有帮助。
我完全不知道如何解决这个问题。
我正在使用 composer 版本 1.10.13 和 Laravel 版本 5.8.38。
我收到的众多弃用通知之一:
Deprecation Notice: Class Vendor\Package\PackageServiceProvider located in D:/wwwroot/project/vendor/{package-vendor}/package/src/Package\PackageServiceProvider.php does not comply with psr-4 autoloading standard. It will not autoload anymore in Composer v2.0. in phar://C:/Users/me/AppData/Local/ComposerSetup/bin/composer.phar/src/Composer/Autoload/ClassMapGenerator.php:201
【问题讨论】:
-
请分享完整和准确的错误信息。此外,结构看起来不太好:包名称通常由供应商名称和包本身的名称组成。这用于文件结构中,因此保存文件的常用文件夹不像
vendor/package,而是vendor/user/package -
@NicoHaase 我添加了我收到的通知之一。我不确定你所说的供应商/用户/包是什么意思,你能详细说明一下吗?
标签: php composer-php psr-4