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
[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
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
findFile
method.When the
DebugClassLoader
wraps the ComposerClassLoader
, the functionfindFile
is currently lost. So it becomes impossible to use theDebugClassLoader
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.