-
-
Notifications
You must be signed in to change notification settings - Fork 736
Description
Bug Report
| Subject | Details |
|---|---|
| Rector version | v2.1.4 |
StringClassNameToClassConstantRector is replacing strings with leading backslashes, causing potential string mismatches.
I have a legacy application that stores the user's selection of a class in the database. At some point it was updated to use ::class which does not have leading backslashes, but some data remains with the leading backslash.
So e.g. the code:
if ($var == 'Foo\Bar' || $var == '\Foo\Bar') {}gets replaced with:
if ($var == \Foo\Bar::class || $var == \Foo\Bar::class) {}Minimal PHP Code Causing Issue
https://getrector.com/demo/3b6c7c8d-cf8f-464e-90d6-0e2bffe91f78
Expected Behaviour
I expect it not to change the comparison. Options might include leaving it unchanged or to have the leading slash when doing string comparisons?
if ($var == \Foo\Bar::class || $var == '\' . \Foo\Bar::class) {}
It might not just be for string comparisons. What if it was to output to the browser or was used as an api result, where it is actually being used as a string?
Note: I saw #9343 but I believe this is a slightly different issue - that one the outcome was to change the configuration, but I think that would only handle having one or the other but not both?