-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
[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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DebugClassLoader] expose proxyfied findFile() method #29833
Conversation
|
It could be considered as a bug fix as well. |
|
Is it common to use DebugClassLoader within Drupal? |
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 to
547b762
Compare
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 to
4f690a3
Compare
|
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 😢 (cf https://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
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 😢 (cf https://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.