如何解决PHPStorm警报类的"多个定义"

Fre*_*man 3 phpstorm composer-php

我使用PHPStorm并具有以下消息"多个定义" PHPUnit\Framework\TestCase.我不确定,但看起来像PHPStorm使用compose autoload系统.所以我试图找到不必要的类定义所在的目录并排除它们.

我发现我可以使用exclude-from-classmap房产了autoload.所以我添加了以下内容:

"vendor/cloudinary/cloudinary_php/tests/",
"vendor/bin/.phpunit/phpunit-5.7/src/ForwardCompatibility/"
Run Code Online (Sandbox Code Playgroud)

这些是存在不必要的类定义的目录.然后我跑了composer dump-autoload.没有改变.重启PHPStrom - 什么都没有.

这是我的整个自动加载部分:

"autoload": {
        "psr-4": { "": "src/" },
        "classmap": [ "app/AppKernel.php", "app/AppCache.php" ],
        "files": [
            "src/helpers/helpers.php"
        ],
        "exclude-from-classmap": [
            "vendor/cloudinary/cloudinary_php/tests/",
            "vendor/bin/.phpunit/phpunit-5.7/src/ForwardCompatibility/"
        ]
    },
Run Code Online (Sandbox Code Playgroud)

我注意到了相关的问题,但它们不符合我的要求.我知道从composer中排除文件夹的方法.

axi*_*iac 6

PhpStorm并不太关心你的composer.json*.它在项目的文件中找到了两次定义的类,这就是它警告你的原因.

PHP并没有被两次定义的类所困扰.如果它从一个文件加载类(通过Composer生成的自动加载器),它永远不会读取另一个文件.

检测到重复项并确定要让PhpStorm忽略哪一项后,在项目视图中右键单击其目录,然后从出现的菜单中选择"将目录标记为" - >"排除".


*这不完全正确.默认情况下,PhpStorm配置为在项目的Composer文件中添加它找到的包作为库.但即使在项目中没有Composer文件的情况下,它也会警告类的重复定义.