问题描述
我在PHPStorm中不断收到“类存在多个定义...”的警告,并且在检查时,我看到了这些巨大的PHP-cs-fixer
文件(100K +行)中的一堆,并带有注释“此文件是一部分CS CS Fixer”。
我发现出于某种原因,在各种库中的PHPloc
下有多个名为composer
,PHP-scoper
,vendor/library_name/tools/
等的其他文件的多个副本。它们都是PHPStorm检测到的巨大的编译文件。
我试图在PHPStorm中一一忽略这些文件,一旦重新索引完成,这些文件就会消失,使我相信它们是IDE生成的文件。但是,IDE不会生成它们并反过来包含它们提示代码。
composer.json
{
"name": "magento/project-community-edition","description": "eCommerce Platform for Growth (Community Edition)","type": "project","license": [
"OSL-3.0","AFL-3.0"
],"config": {
"preferred-install": "dist","sort-packages": true
},"require": {
"magento/composer-root-update-plugin": "~1.0","magento/product-community-edition": "2.4.1"
},"require-dev": {
"allure-framework/allure-PHPunit": "~1.2.0","dealerdirect/PHPcodesniffer-composer-installer": "^0.5.0","friendsofPHP/PHP-cs-fixer": "~2.16.0","lusitanian/oauth": "~0.8.10","magento/magento-coding-standard": "*","magento/magento2-functional-testing-framework": "^3.0","pdepend/pdepend": "~2.7.1","PHPcompatibility/PHP-compatibility": "^9.3","PHPmd/PHPmd": "^2.8.0","PHPstan/PHPstan": ">=0.12.3 <=0.12.23","PHPunit/PHPunit": "^9","sebastian/PHPcpd": "~5.0.0","squizlabs/PHP_codesniffer": "~3.5.4"
},"conflict": {
"gene/bluefoot": "*"
},"autoload": {
"psr-4": {
"Magento\\Framework\\": "lib/internal/Magento/Framework/","Magento\\Setup\\": "setup/src/Magento/Setup/","Magento\\": "app/code/Magento/","Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
},"psr-0": {
"": [
"app/code/","generated/code/"
]
},"files": [
"app/etc/NonComposerComponentRegistration.PHP","app/helper.PHP"
],"exclude-from-classmap": [
"**/dev/**","**/update/**","**/Test/**"
]
},"autoload-dev": {
"psr-4": {
"Magento\\Sniffs\\": "dev/tests/static/framework/Magento/Sniffs/","Magento\\Tools\\": "dev/tools/Magento/Tools/","Magento\\Tools\\Sanity\\": "dev/build/publication/sanity/Magento/Tools/Sanity/","Magento\\TestFramework\\inspection\\": "dev/tests/static/framework/Magento/TestFramework/inspection/","Magento\\TestFramework\\Utility\\": "dev/tests/static/framework/Magento/TestFramework/Utility/","Magento\\PHPStan\\": "dev/tests/static/framework/Magento/PHPStan/"
}
},"version": "2.4.0","minimum-stability": "stable","repositories": [
{
"type": "composer","url": "https://repo.magento.com/"
}
],"extra": {
"magento-force": "override"
}
}
PHPStorm忽略了文件(在此处添加PHP-cs-fixer
和PHPloc
以某种方式从vendor
目录中删除了所有/多个副本):
解决方法
这些文件位于您的供应商目录中,因为您必须从源而非发行版安装依赖项。
让我们以 sebastian/code-unit
为例来看看它是如何工作的:
- 该文件显然在存储库中:https://github.com/sebastianbergmann/code-unit/tree/1.0.8/tools
- 但被排除在分发范围之外(您在安装软件包时实际从 GitHub 下载的存档文件):https://github.com/sebastianbergmann/code-unit/blob/1.0.8/.gitattributes#L6 - 您可以看到它不存在于您从 https://github.com/sebastianbergmann/code-unit/releases/tag/1.0.8 下载的文件中立>
因此,您必须使用 composer install --prefer-source
(或 composer update --prefer-source
,因为它是具有该选项的另一个命令)安装您的依赖项,并且您想使用 --prefer-dist
或实际上不使用任何这些标记为后者是默认值。您可以在官方文档中找到有关它的更多信息:https://getcomposer.org/doc/03-cli.md#install-i
删除您的供应商目录并在没有 --prefer-source
标志的情况下再次安装依赖项。
AFAIR 当您没有安装 curl
扩展程序时也会出现问题,然后只需添加此扩展程序即可。