如何解决 class 的 PHPStorm 警报 "Multiple definitions"
How to resolve PHPStorm alert "Multiple definitions" for a class
我使用 PHPStorm,PHPUnit\Framework\TestCase
收到以下消息 "Multiple definitions"。我不太确定,但看起来 PHPStorm 使用了 compose 自动加载系统。所以我试图找到不必要的 class 定义存在的目录并排除它们。
我发现我可以在autoload
中使用exclude-from-classmap
属性。所以我添加了以下内容:
"vendor/cloudinary/cloudinary_php/tests/",
"vendor/bin/.phpunit/phpunit-5.7/src/ForwardCompatibility/"
这些目录中存在不必要的 class 定义。那我运行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/"
]
},
我注意到相关问题,但不符合我的要求。我知道从 composer 中排除文件夹的方法。
PhpStorm 不太关心你的composer.json
*。它发现 class 在您的项目文件中定义了两次,这就是它警告您的原因。
PHP 不关心 class 被定义两次。如果它从一个文件加载 class(通过 Composer 生成的自动加载器),它永远不会读取另一个文件。
在检测到重复项并决定要 PhpStorm 忽略哪个后,在项目视图中的目录中 right-click 并从出现的菜单中选择 "Mark Directory as" -> "Excluded" .
* 这并不完全正确。 PhpStorm 默认配置为将它在项目的 Composer 文件中找到的包添加为库。但即使项目中没有 Composer 文件,它也会警告 classes 的重复定义。
您正在使用多个模块,即单个 "workspace" 中的多个 "projects" 对吗?
PHPStorm 并不真正支持这一点。它让您可以在一个工作区中打开多个项目,但并不真正支持那种工作方式。支持彻底崩溃,支离破碎,无论存在什么,似乎都是在一个根本不兼容的设计之上被黑客入侵的。这只是延续到20192020年的悲惨状况,隧道尽头没有光明。
我使用 PHPStorm,PHPUnit\Framework\TestCase
收到以下消息 "Multiple definitions"。我不太确定,但看起来 PHPStorm 使用了 compose 自动加载系统。所以我试图找到不必要的 class 定义存在的目录并排除它们。
我发现我可以在autoload
中使用exclude-from-classmap
属性。所以我添加了以下内容:
"vendor/cloudinary/cloudinary_php/tests/",
"vendor/bin/.phpunit/phpunit-5.7/src/ForwardCompatibility/"
这些目录中存在不必要的 class 定义。那我运行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/"
]
},
我注意到相关问题,但不符合我的要求。我知道从 composer 中排除文件夹的方法。
PhpStorm 不太关心你的composer.json
*。它发现 class 在您的项目文件中定义了两次,这就是它警告您的原因。
PHP 不关心 class 被定义两次。如果它从一个文件加载 class(通过 Composer 生成的自动加载器),它永远不会读取另一个文件。
在检测到重复项并决定要 PhpStorm 忽略哪个后,在项目视图中的目录中 right-click 并从出现的菜单中选择 "Mark Directory as" -> "Excluded" .
* 这并不完全正确。 PhpStorm 默认配置为将它在项目的 Composer 文件中找到的包添加为库。但即使项目中没有 Composer 文件,它也会警告 classes 的重复定义。
您正在使用多个模块,即单个 "workspace" 中的多个 "projects" 对吗?
PHPStorm 并不真正支持这一点。它让您可以在一个工作区中打开多个项目,但并不真正支持那种工作方式。支持彻底崩溃,支离破碎,无论存在什么,似乎都是在一个根本不兼容的设计之上被黑客入侵的。这只是延续到20192020年的悲惨状况,隧道尽头没有光明。