Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

multiple definitions exist for class

Tags:

phpstorm

I'm using Kohana framework which allows for multiple class definitions (in application and system subfolders). I'm using phpstorm as an IDE which gives me messages multiple definitions exist for class . Is there any way to tell phpStorm which class definition is correct?

like image 551
Max Koretskyi Avatar asked Apr 14 '14 17:04

Max Koretskyi


8 Answers

Is there any way to tell PhpStorm which class definition is correct?

You cannot, unfortunately.

https://youtrack.jetbrains.com/issue/WI-17646 -- watch this ticket (star/vote/comment) to get notified on any progress.

ATM you either just ignore the under-waving .. or you can configure that inspection to not to report such cases (Settings/Preferences | Editor | Inspections | PHP | Undefined | Undefined class, it has Don't report multiple class declaration potential problems checkbox).

Even with that inspection configured, IDE will still ask you what class declaration to jump to (and this is correct behaviour as IDE does not know if you want to see the original implementation or implement your own).


The only other way is to ensure that there is only one class with the same name in the project. For that you may use:

  • Mark whole folder as excluded
  • Mark individual file as Plain Text

Both are available via content menu in Project View and applicable to project files only (e.g. will be unavailable or will do nothing useful if tried to apply in Library scope).

like image 128
LazyOne Avatar answered Oct 04 '22 13:10

LazyOne


You should just ignore the complete cache folder.

  • Go to Settings > Directories
  • Choose var\cache
  • Set it to 'Excluded'

From: https://github.com/Haehnchen/idea-php-symfony2-plugin/issues/301

like image 28
kuba Avatar answered Oct 04 '22 13:10

kuba


I've found a possible solution to my problem - I can mark file as plain

like image 39
Max Koretskyi Avatar answered Oct 04 '22 13:10

Max Koretskyi


As variant you can turn off inspection only for specific class. Put cursor inside underwaved class name, then Alt+EnterInspection optionsSupress for statement

PHPStorm adds

/** @noinspection PhpUndefinedClassInspection */

above class declaration and class name is not underwaved anymore.

like image 39
Maug Lee Avatar answered Oct 04 '22 11:10

Maug Lee


I've been around the web everywhere and not a single option worked for me... I've been struggling for months with it, and today I found a solution, so if none of the above works for you, try redefining the PHP Include Path List. under Settings > Languages & Frameworks > PHP, make sure only the folders containing paths to source used by your project or application is configured.

My scenario is that I do a lot of package development, and while my packages are all in one project, they are also "symlinked" in "vendor" in my composer configuration, so there is duplicated code found by PHPStorm, in the vendor folder and my packages folder. Similarly, if include paths are duplicated, or paths are configured to find code outside of your project, which is already part of the project, it will also find multiple definitions. So, excluding the symlinked folders in vendor, allows PHPStorm to only find one copy of the source to my packages, and if my packages contain vendor folders of their own, they will also show up as duplicated definitions. Remove anything in the Include Path list where it may find dipplication

like image 25
PipIWYG Avatar answered Oct 04 '22 12:10

PipIWYG


Prolog

Guess there are several ways to solve this problem. Actually, it's just a warning and it says that phpstorm can't provide you with autocompletion so you have to work a bit harder :D

I had the same problem as many others here and solved it by ignoring unwanted.


Scenario

Had a git project with a vendor-folder after composer install. Also, there is a my-project.phar in this project that also contains some vendor stuff and this caused my warnings.


Solution

File > Preferences|Settings > Directories There you have to possibility to exclude files and folders. In my case it's the .phar so it's a "file" and you can add it at the bottom of the settings-window.

sample

PHPStorm will no longer see duplicates.

This is very project-specific and I guess most people have to find their own solution but pointing to this may help to find the problem easier.

Hope this helps someone :)

like image 27
Dwza Avatar answered Oct 04 '22 11:10

Dwza


Just some addition to the Andy White's comment:

Settings | Editor | Inspections | PHP | Undefined | Undefined class | Don't report multiple class declaration potential problems

I really couldn't find this config and thought it was no there now, but this is still there, but very well hidden)

It is a little counterintuitive and inconspicuous, but the needed checkbox is in the right panel, and appears only if you click on the Undefined class row: enter image description here

like image 31
James Bond Avatar answered Oct 04 '22 11:10

James Bond


Somewhere in your project there are multiple definitions for the same class. I discovered I had backup copies in my project which caused this warning. I removed the backups from my Project (a good idea anyway) and it fixed the error.

like image 3
patrick Avatar answered Oct 04 '22 11:10

patrick