Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
[DebugClassLoader] expose proxyfied findFile() method#29833
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
[DebugClassLoader] expose proxyfied findFile() method#29833
Uh oh!
There was an error while loading.Please reload this page.
Conversation
fancyweb commentedJan 10, 2019
It could be considered as a bug fix as well. |
nicolas-grekas commentedJan 10, 2019
Is it common to use DebugClassLoader within Drupal? |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
fancyweb commentedJan 10, 2019
I don't know. I want to use it. A lot of people might currently use it and have not detected this problem because the incriminated class ( But I don't want this PR to be treated as a request for Drupal. I will report the bad implementation to Drupal issues. It just gonna take forever before getting fixed. The Debug component is here for a better DX. So it just seems logical to try our best in the WDYT of my proposition to try to proxify every wrapped class loader methods ? |
32cfe3f to547b762Compare
fabpot left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
as a bug fix to 3.4
547b762 to4f690a3Comparefabpot commentedJan 13, 2019
Thank you@fancyweb. |
…cyweb)This PR was submitted for the master branch but it was merged into the 3.4 branch instead (closes#29833).Discussion----------[DebugClassLoader] expose proxyfied findFile() method| Q | A| ------------- | ---| Branch? | master| Bug fix? | no| New feature? | yes| BC breaks? | no| Deprecations? | no| Tests pass? | yes| Fixed tickets | -| License | MIT| Doc PR | -As bad as it is, some third party libraries expect that at least one autoload function will be the Composer one and have behaviors that relies on the public `findFile` method.When the `DebugClassLoader` wraps the Composer `ClassLoader`, the function `findFile` is currently lost. So it becomes impossible to use the `DebugClassLoader` with these libraries.This is for example the case in Drupal 😢 (cfhttps://github.com/drupal/core/blob/83bc30ac4030ed163e1919ca5e12b338a22c87dd/lib/Drupal/Component/ClassFinder/ClassFinder.php).Fixing these bad implementations in third party libraries can take forever as things move way slower than in Symfony. This is why I think supporting this case directly in Symfony is better. It's easy and will make the `DebugClassLoader` compatible with more cases.What could be done to go further in this direction would be to proxify any method implementend by wrapped class loaders.Commits-------4f690a3 [DebugClassLoader] Readd findFile() method
Uh oh!
There was an error while loading.Please reload this page.
As bad as it is, some third party libraries expect that at least one autoload function will be the Composer one and have behaviors that relies on the public
findFilemethod.When the
DebugClassLoaderwraps the ComposerClassLoader, the functionfindFileis currently lost. So it becomes impossible to use theDebugClassLoaderwith these libraries.This is for example the case in Drupal 😢 (cfhttps://github.com/drupal/core/blob/83bc30ac4030ed163e1919ca5e12b338a22c87dd/lib/Drupal/Component/ClassFinder/ClassFinder.php).
Fixing these bad implementations in third party libraries can take forever as things move way slower than in Symfony. This is why I think supporting this case directly in Symfony is better. It's easy and will make the
DebugClassLoadercompatible with more cases.What could be done to go further in this direction would be to proxify any method implementend by wrapped class loaders.